IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python 列表推导式和生成器表达式 -> 正文阅读

[Python知识库]python 列表推导式和生成器表达式

列表推导式又称为列表解析

用来干什么的的

在python中列表用的比较多,用来简化的代码的。所以提供了列表解析这种方式。

循环列表推导式

循环模式: [(要加工的变量)for 变量 in iterable]
in iterable 是可迭代的例如 range(1,10) list,tuple、字符串这种,如果是一个整数就不行,因为不能迭代。简单来说在python中就是可以用for循环的。python内部来说就是含有 __iter__下划线方法
例子:要将列表中每个数字翻倍并加7,使用循环列表表达式可以这样做

 l=[2*n+7 for n in range(1,11)]
print(l)

放集合也可以的,只不过最后输出是列表,那[] 换成{} or() 可以吗?不可以,所以才叫列表推导式

l={2,3,4,5}
l1=[2*n+7 for n in l]
print(l1)

将字符串每个字符变大写

l=[2*n+7 for n in range(1,11)]
print(l)

用到的地方:以某种方式修改现有的列表,比如下面的列表执行后首字母都会变为大写

names=['a1','mei','jo','del']
print(names)
cap_names=[n.capitalize() for n in names]
print(cap_names)

筛选列表推导式

还可以剔除不想要的元素
筛选列表推导式:[加工的变量 for 变量 in iterable if 条件]
例子 返回一个列表中的整数

nums=[-1,0,6,-4,-2,3]
result=[n for n in nums if n>0]
print(result)

使用列表解析删除字符串中的所有元音

eat_vowels='Apple Sauce'
list_ret = [c for c in eat_vowels if c.lower() not in "aeiou"]
#ret返回的结果是一个字符串列表['p', 'p', 'l', ' ', 'S', 'c']
#因此需要join将所有字符串拼接成一个,再返回
str_ret = ''.join(list_ret)
print(str_ret)

join的用法就是str.join(sequence) ,sequence是你要连接的序列,str就是你要选择你要以什么方式将他们连接起来。例子如下

str = "-"
seq = ("a", "b", "c")# 字符串序列
print(str.join(seq))

生成器表达式

生成器表达式和列表表达式不同之处在于,把[] 换成()就可以了,例如上面的去掉元音,就是生成器表达式酷似苏生成所需列表或序列部分,但是根据需要生成元素,而不是像列表解析式一次性生成所有元素,就是可以节省空间的意思。

eat_vowels='Apple Sauce'
list_ret = (c for c in eat_vowels if c.lower() not in "aeiou")
print(list_ret)#<generator object <genexpr> at 0x0000016D84432340>
str_ret = ''.join(list_ret)
print(str_ret)

生成器表达式也能筛选

# 获取1-100内能被3整除的数
gen=(i for i in range(1,101) if i%3==0)
print(gen) #<generator object <genexpr> at 0x0000019CC6422340>

列表推导式vs生成器表达式

1、列表推导式数据一次性加载到内存,生成器表达式遵循迭代器协议,逐个产生元素
2、列表推导式得到的是一个列表,生成器表达式获取的是一个生成器,是一个内存地址

同时还有字典推导式,集合推导式
l

st1 = ('spring','summer','winter')
lst2 = ('春天','夏天','冬天')
dic = {lst1[i]:lst2[i] for i in range(len(lst1))}
print(dic)
lst = [1,2,3,-1,-3,-7,9]
s = {abs(i) for i in lst}
print(s)
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 22:49:56  更:2022-07-04 22:52:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 14:40:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码