python 列表解析式_【Python小试】使用列表解析式简化代码

2024-02-01 11:20

本文主要是介绍python 列表解析式_【Python小试】使用列表解析式简化代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

列表解析式的好处:

代码简洁

可读性强

运行快

示例

来自《Python编程》中的一个例子:同时投掷两颗面数不同的骰子(如一个6面的D6和一个10面的D10)n次,统计两个骰子点数之和,并用Pygal绘制bar图,进行交互可视化。

不用列表解析

from random import randint

import pygal

class Die():

'''表示一个骰子的类'''

def __init__(self, num_sides=6):

self.num_sides = num_sides

def roll(self):

return randint(1, self.num_sides)

die_1 = Die()

die_2 = Die(10)

results = []

for roll_num in range(50000):

result = die_1.roll() + die_2.roll()

results.append(result)

frequencies = []

max_result = die_1.num_sides + die_2.num_sides

for value in range(1, max_result+1):

frequency = results.count(value)

frequencies.append(frequency)

#可视化

hist = pygal.Bar()

hist.title = 'Results of rolling a D6 and a D10 50000 times.'

hist.x_labels = ['2','3','4','5','6','7','8','9','10','11','12','13','14','15','16']

hist.x_title = "Result"

hist.y_title = "Frequency of Result"

hist.add('D6 + D10',frequencies)

hist.render_to_file('different_dice_visual.svg')

对以上循环都改用列表解析

from random import randint

import pygal

'''省略Class Die'''

die_1 = Die()

die_2 = Die(10)

results = [die_1.roll()+die_2.roll() for i in range(50000)]

print(results)

max_result = die_1.num_sides + die_2.num_sides

frequencies = [results.count(x) for x in range(1, max_result)]

print(frequencies)

#可视化

hist = pygal.Bar()

hist.title = 'Results of rolling a D6 and a D10 50000 times.'

hist.x_labels = [str(x) for x in range(2,17)]

hist.x_title = "Result"

hist.y_title = "Frequency of Result"

hist.add('D6 + D10',frequencies)

hist.render_to_file('different_dice_visual.svg')

可视化结果

1c2bebcf9a5d17f27f8acf94e06c1dc6.png

这篇关于python 列表解析式_【Python小试】使用列表解析式简化代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/667121

相关文章

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)