列表生成式

现在有个需求,现有列表a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,你怎么实现?你可能会想到2种方式

二逼青年版

生成一个新列表b,遍历列表a,把每个值加1后存在b里,最后再把a=b, 这样二逼的原因不言而喻,生成了新列表,浪费了内存空间。

>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = []
>>> for i in a:b.append(i+1)
... 
>>> b
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a = b
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
普通青年版

毫无新意

a = [1,3,4,6,7,7,8,9,11]
for index,i in enumerate(a):
    a[index] +=1
print(a)
略屌青年版

>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a = map(lambda x:x+1, a)
>>> a
>>> for i in a:print(i)
... 
3
5
7
9
11
装逼青年版

>>> a = [i+1 for i in range(10)]
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
这样的写法就叫做列表生成式,有什么用呢?装逼用,哈哈,写出来显的高级,效果跟上面的都一样哈。
View Code

看下面的就可以了,列表装逼高配版

#下面是自己写的,主要看下面这个就可以
arr = ["%s sex is 男"%i if (i%2) == 0 else "%s sex is 女"%i for i in range(10)]
for i in arr:
    print(i)
"""
0 sex is 男
1 sex is 女
2 sex is 男
3 sex is 女
4 sex is 男
5 sex is 女
6 sex is 男
7 sex is 女
8 sex is 男
9 sex is 女
"""

 

posted @ 2020-08-01 22:49    阅读(139)  评论(0编辑  收藏  举报