列表解析式的好处:

  • 代码简洁
  • 可读性强
  • 运行快

示例

来自《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')

可视化结果

最新文章

  1. .Net环境下的缓存技术介绍 (转)
  2. svn bug
  3. setValue和setObject的区别
  4. GIF录制神器GifCam
  5. dataGrid查询表格
  6. 去除tabbar的灰线
  7. thinkphp验证码使用
  8. HDU 3518 Boring counting(后缀数组,字符处理)
  9. ArcEngine下投影坐标和经纬度坐标的相互转换
  10. Android 如何在Java代码中手动设置控件的marginleft
  11. vmware虚拟机迁移系统到其它磁盘(xjl456852原创)
  12. 安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS【下】
  13. 【Android Training UI】创建自定义Views(Lesson 0 - 章节概览)
  14. ubuntu Emergency Mode
  15. axios封装
  16. Spring Cloud的DataRest(二)
  17. 特性Attribute
  18. vue选中与取消简单实现
  19. Spring boot+ maven + thymeleaf + HTML 实现简单的web项目
  20. UML类图中箭头的含义

热门文章

  1. Beta-功能规格说明书
  2. 极简实用的Asp.NetCore框架再新增商城模块
  3. Spring Cloud Gateway夺命连环10问?
  4. Des加密解密(公共方法)
  5. 奇偶位交换 牛客网 程序员面试金典 C++ Python
  6. distinct-subsequences leetcode C++
  7. diff 命令,防止遗忘
  8. Oracle ORA 12541 报错解决过程
  9. MySQL中特别实用的几种SQL语句送给大家
  10. Django 中间件 详细总结