python列表推导和生成器表达式知识点总结


Posted in Python onJanuary 10, 2020

首先来看一下代码:

chars = "abcd"
tmp = []
for char in chars:
 tmp.append(ord(char))
print(tmp)

这是一般的写法,将字符串中的每一个字符转换称ASCII码,然后存进一个tmp数组。

利用列表推导的方式

tmp = [ord(char) for char in chars]

输出:[97,98,99,100]

列表推导中也可以使用if和else。

当只有一个if时:

chars = "abcd"
tmp = [ord(char) for char in chars if ord(char)>=98]
print(tmp)

输出:['b','c','d']

额外提一下,当然我们也可以利用filter和map达到相同的效果

tmp = list(filter(lambda x:x>=98,map(ord,chars)))

这句话的意思是,使用map对chars中的每一个字符利用ord函数进行处理。再使用filter对这每一个字符的ASCII码进行过滤大于等于98的,最后将这些符合条件的值存进一个列表中。lambda x:x>98是一个匿名函数。

有一个if else时:

chars = "abcd"
tmp = [True if ord(char)>=98 else False for char in chars]
print(tmp)

输出:[False, True, True, True]

一般而言,列表推导应尽量保持简短。

再看下一个例子:利用列表推导计算笛卡儿积(以衣服的颜色和尺寸为例)

colors = ["black","white"]
sizes = ["S","M","L"]
tshirts = [(color,size) for color in colors for size in sizes]
print(tshirts)

生成器表达式可以用于生成其它数据类型的序列,虽然列表推导也可以初始化元祖、数组和其它类型,但是生成器表达式是更好的选择。这是因为生成器表达式背后遵从迭代器协议,可以逐个产生元素,而不是先建立一个完整的列表

生成器表达式语法和列表差不多,只不过把方括号变成圆括号。

用生成器表达式生成元组和数组例子:

chars = "abcd"
tmp = tuple(ord(char) for char in chars)
print(tmp)

输出:(97, 98, 99, 100)

import array
chars = "abcd"
a = array.array("I",(ord(char) for char in chars))
print(a)

输出:array('I', [97, 98, 99, 100])

array的构造方法须提供两个参数,第一个是数组中元素的存储方式。如果生成器表达式是唯一的参数,就不用括号括起来,这里不是唯一的,因此要用括号括起来。

colors = ["black","white"]
sizes = ["S","M","L"]
for tshirt in ("%s %s" % (c,s) for c in colors for s in sizes):
  print(tshirt)

输出:

black S
black M
black L
white S
white M
white L

以上就是本次介绍的全部相关知识点,感谢大家的学习和对三水点靠木的支持。

Python 相关文章推荐
使用Python程序抓取新浪在国内的所有IP的教程
May 04 Python
python实现基本进制转换的方法
Jul 11 Python
Python实现以时间换空间的缓存替换算法
Feb 19 Python
python套接字流重定向实例汇总
Mar 03 Python
Python爬取APP下载链接的实现方法
Sep 30 Python
对Python 网络设备巡检脚本的实例讲解
Apr 22 Python
python使用openpyxl库修改excel表格数据方法
May 03 Python
python 按不同维度求和,最值,均值的实例
Jun 28 Python
Python selenium文件上传下载功能代码实例
Apr 13 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
如何用python爬取微博热搜数据并保存
Feb 20 Python
python制作图形界面的2048游戏, 基于tkinter
Apr 06 Python
pytorch的梯度计算以及backward方法详解
Jan 10 #Python
Python如何获取Win7,Win10系统缩放大小
Jan 10 #Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 #Python
Python 实现将数组/矩阵转换成Image类
Jan 09 #Python
python 实现将Numpy数组保存为图像
Jan 09 #Python
Python+OpenCV实现将图像转换为二进制格式
Jan 09 #Python
如何使用Python破解ZIP或RAR压缩文件密码
Jan 09 #Python
You might like
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
php通过分类列表产生分类树数组的方法
2015/04/20 PHP
PHP统计当前在线用户数实例讲解
2015/10/21 PHP
64位windows系统下安装Memcache缓存
2015/12/06 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
基于jquery的跨域调用文件
2010/11/19 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
jquery判断checkbox是否选中及改变checkbox状态的实现方法
2016/05/26 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
js动态引入的四种方法
2018/05/05 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
Vue computed 计算属性代码实例
2020/04/22 Javascript
python3实现跳一跳点击跳跃
2018/01/08 Python
Python使用OpenCV进行标定
2018/05/08 Python
python取余运算符知识点详解
2019/06/27 Python
使用matplotlib绘制图例标签中带有公式的图
2019/12/13 Python
pytorch实现onehot编码转为普通label标签
2020/01/02 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
Love, Bonito国际官网:新加坡女装品牌
2021/03/13 全球购物
求职简历中个人的自我评价
2013/12/01 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
股东大会通知
2015/04/24 职场文书
公司会议开幕词
2016/03/03 职场文书
python批量更改目录名/文件名的方法
2021/04/18 Python