码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-08-19 18:49:13      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:span   其它   pre   new   自动   表达   数据   推导   next   

# 列表推导式
lis = [i for i in range(10)]
print(lis)

# 生成器表达式
crt = (i for i in range(10))
print(crt)
print(crt.__next__())
print(crt.__next__())
print(crt.__next__())


#打印:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
<generator object <genexpr> at 0x00000188F0FED9C8>
0
1
2

 

结论:

列表推导式和生成器表达式的外部表现方式仅仅是一个中括号和一个小括号的差别;
列表推导式打印出来为一个列表,而生成器表达式返回的是一个生成器,可以从中一条一条的取值

完整的表达式:

(元素 for 元素 in 可迭代数据类型) #遍历之后处理
(元素 for 元素 in 可迭代数据类型 if 元素符合的条件) #筛选

好处:

 一定情况下可节省代码行数,提高效率,但如果推导式过于复杂,应该优先考虑可读性

 

其它推导式

字典推导式和集合推导式:集合推导式有自动排重功能

dic = {k:5,v:10}
new_dic = {dic[k] : k for k in dic}
print(new_dic)

st = {1,2,3,1,1,4,}
st1 = { i for i in st}
st2 = { i for i in {1,2,3,1,1,4,}}
print(st1,st2)

#打印:
{5: k, 10: v}
{1, 2, 3, 4} {1, 2, 3, 4}

 

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

标签:span   其它   pre   new   自动   表达   数据   推导   next   

原文地址:https://www.cnblogs.com/aizhinong/p/11378750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!