0
点赞
收藏
分享

微信扫一扫

列表推导式

编程练习生J 2022-04-16 阅读 50
python

普通写法

# 生成一个数字序列
L = []
def my_func(x):
    return 2*x
for i in range(5):
    L.append(my_func(i))
L
#输出[0,2,4,6,8]

列表推导式

        可以利用列表推导式进行写法上的简化:[* for i in *]。其中,第一个`*`为映射函数,其输入为后面`i`指代的内容,第二个`*`表示迭代的对象,比如range(5)。

M=[2*i for i in range(5)]
#输出[0,2,4,6,8]

        这种方式在别的内置数组类型中也适用,此时这种方式叫做生成器表达式

tuple(2*i for i in range(5))
#输出[0,2,4,6,8]

import array
array.array('I',(2*i for i in range(5)))
#输出为:array('I', [0, 2, 4, 6, 8])

        列表表达式还支持多层嵌套,如下面的例子中第一个`for`为外层循环,第二个为内层循环:

[m+'_'+n for m in ['a', 'b'] for n in ['c', 'd']]
#输出:['a_c', 'a_d', 'b_c', 'b_d']

三目运算符

        普通写法:

a, b = 'cat', 'dog'
condition = 2 > 1 # 此时为True
if condition:
    value = a
else:
    value = b
value
#输出:'cat'

     三目运算符写法:

value = 'cat' if 2>1 else 'dog'
value
#输出:'cat'

  列表生成式使用三目运算符

# 截断列表中超过5的元素,即超过5的用5代替,小于5的保留原来的值
L = [1, 2, 3, 4, 5, 6, 7]
L = [i if i <= 5 else 5 for i in L]
L
#输出:[1, 2, 3, 4, 5, 5, 5]
举报

相关推荐

0 条评论