温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python推导式知识点有哪些

发布时间:2021-11-25 13:54:29 阅读:180 作者:iii 栏目:互联网科技
Python开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要介绍“python推导式知识点有哪些”,在日常操作中,相信很多人在python推导式知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python推导式知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

推导式的定义

推导式可以简洁、高效地将散乱的数据组织起来存放到容器(列表、元组、字典、集合)中。

推导式是python简洁、优雅、高效的完美体现。熟练掌握推导式,相信会对你编写python程序有很大的帮助。

运用场景

推导式一般是配合循环使用的,通过推导式组织起来的数据可以很方便的循环处理,未经组织的零散数据处理起来会很麻烦。例如要找到很多数字中符合某种特征的数字,放入列表中循环判断处理就很方便。再如读取日志文件,需要筛选出符合某种条件的记录时,将数据组织成列表嵌套字典结构可读性会很高、处理也更加方便。python程序员在编写代码时几乎每天都会用到推导式。

推导式的构造

推导式可以创建容器对象(列表、元组、字典、集合等等),推导式的基本构造请看下图:

python推导式知识点有哪些

  • 容器模板可以是表达式,可以存在多个变量。

  • for语句可以嵌套多条for语句

  • if语句可对容器模板中的变量进行筛选,满足条件的才放入容器,不满足条件的则舍弃。

推导式案例

以下会列举非常多的代码示例,学习推导式的朋友一定要认真练习,在练习的过程中熟悉和掌握推导式。

不同容器的推导式:

# 列表推导式:0-9
l1 = [i for i in range(10)]
# 列表推导式:0-9范围内的偶数
l2 = [i for i in range(10if i % 2 == 0]
print(l1)
print(l2)
# 元组推导式:0-9
t1 = tuple(i for i in range(10))  # 不用tuple生成的是迭代器
# 元组推导式:0-9范围内的偶数
t2 = tuple(i for i in range(10if i % 2 == 0)  # 不用tuple生成的是迭代器
print(t1)
print(t2)
# 集合推导式:0-9
l1 = {i for i in range(10)}
# 集合推导式:0-9范围内的偶数
l2 = {i for i in range(10if i % 2 == 0}
print(l1)
print(l2)
# 字典推导式,键是0-9,值是a-j
d1 = {x: y for x, y in zip(range(10), 'abcdefghij')}
# 字典推导式,键是0-9,值是a-j
d2 = {x: y for x, y in zip(range(10), (chr(i) for i in range(97107)))}
# 字典推导式,一行代码互换键和值
d3 = {y:x for x,y in d1.items()}
print(d1)
print(d2)
print(d3)

out:
(0123456789)
(02468)
{0123456789}
{02468}
{0'a'1'b'2'c'3'd'4'e'5'f'6'g'7'h'8'i'9'j'}
{0'a'1'b'2'c'3'd'4'e'5'f'6'g'7'h'8'i'9'j'}
{'a'0'b'1'c'2'd'3'e'4'f'5'g'6'h'7'i'8'j'9}

多条for嵌套推导式:

# 注意多条for嵌套时,先循环最左边,再循环右边
list1 = [(x, y) for x in range(5for y in range(3)]
list2 = [[x,y,z] for x in range(1,3for y in range(1,4for z in range(1,3)]
print(list1)
print(list2)

out:
[(00), (01), (02), (10), (11), (12), (20), (21), (22), (30), (31), (32), (40), (41), (42)]
[[111], [112], [121], [122], [131], [132], [211], [212], [221], [222], [231], [232]]

容器模板:

list1 = [(x, y) for x in range(3for y in range(3)] #list内的元素是tuple
list2 = [{x, y} for x in range(3for y in range(3)] #list内的元素是set
list3 = [[x, y] for x in range(3for y in range(3)] #list内的元素是list
print(list1)
print(list2)
print(list3)

out:
[(00), (01), (02), (10), (11), (12), (20), (21), (22)]
[{0}, {01}, {02}, {01}, {1}, {12}, {02}, {12}, {2}]
[[00], [01], [02], [10], [11], [12], [20], [21], [22]]

容器模板中使用表达式:

# 创建字典,键值对是0:a..9:j
dict1 = {x: y for x, y in zip(range(10), 'abcdefghij')}
# 创建字典,键值对是0:a..9:j,将键转换成字符型,将值从小写字母转换成大写字母
dict2 = {str(x): y.upper() for x, y in zip(range(10), 'abcdefghij')} 
print(dict1)
print(dict2)

out:
{0'a'1'b'2'c'3'd'4'e'5'f'6'g'7'h'8'i'9'j'}
{'0''A''1''B''2''C''3''D''4''E''5''F''6''G''7''H''8''I''9''J'}

if筛选元素:

list1 = [chr(i) for i in range(97123)]  # 创建列表,元素是26个小写字母
list2 = [chr(i) for i in range(97123if i % 2 == 0]  # 创建列表,只保留ascii值是偶数的字母
list3 = [chr(i) for i in range(97123if i % 2 == 1]  # 创建列表,只保留ascii值是奇数的字母
list4 = [chr(i) for i in range(97123if i < 97 + 13]  # 创建列表,只保留26个字母的前面一半
list5 = [chr(i) for i in range(97123if i >= 97 + 13]  # 创建列表,只保留26个字母的后面一半

print(list1)
print(list2)
print(list3)
print(list4)
print(list5)

out:
['a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''s''t''u''v''w''x''y''z']
['b''d''f''h''j''l''n''p''r''t''v''x''z']
['a''c''e''g''i''k''m''o''q''s''u''w''y']
['a''b''c''d''e''f''g''h''i''j''k''l''m']
['n''o''p''q''r''s''t''u''v''w''x''y''z']

到此,关于“python推导式知识点有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/fz17/blog/4746332

AI

开发者交流群×