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下函数参数的传递(参数带星号的说明)
Sep 19 Python
python使用PyFetion来发送短信的例子
Apr 22 Python
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 Python
python实现根据主机名字获得所有ip地址的方法
Jun 28 Python
Python实现发送QQ邮件的封装
Jul 14 Python
动态规划之矩阵连乘问题Python实现方法
Nov 27 Python
Python使用Matplotlib实现Logos设计代码
Dec 25 Python
python中退出多层循环的方法
Nov 27 Python
通过python实现弹窗广告拦截过程详解
Jul 10 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
Feb 11 Python
python-sys.stdout作为默认函数参数的实现
Feb 21 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
Nov 05 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 文件上传模型,支持多文件上传
2009/08/13 PHP
PHP版国家代码、缩写查询函数代码
2011/08/14 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
2017/02/23 PHP
小米公司JavaScript面试题
2014/12/29 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
vue组件学习教程
2017/09/09 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
JS二级菜单不同实现方法分析【4种方法】
2018/12/21 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
用jQuery实现抽奖程序
2020/04/12 jQuery
vue常用高阶函数及综合实例
2021/02/25 Vue.js
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
Python中os.path用法分析
2015/01/15 Python
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
python实现感知器算法详解
2017/12/19 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
python安装sklearn模块的方法详解
2020/11/28 Python
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
abstract class和interface有什么区别?
2012/01/03 面试题
优秀士兵先进事迹
2014/02/06 职场文书
领导干部考察材料
2014/02/08 职场文书
成龙洗发水广告词
2014/03/14 职场文书
淘宝好评语句大全
2014/12/31 职场文书
社区端午节活动总结
2015/02/11 职场文书
早会开场白台词大全
2015/06/01 职场文书
患者身份识别制度
2015/08/06 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
导游词之临安白水涧
2019/11/05 职场文书
python爬虫请求库httpx和parsel解析库的使用测评
2021/05/10 Python