Python列表推导式
列表推导式是 中一种非常强大的语法结构,它提供了一种简明扼要的方法来创建列表。 列表推导式通过将循环和条件判断结合,避免了冗长的代码。下面是一个列表推导式,表示我们希望将列表 中的每个元素加上1:>>> [x+1 for x in [10,20,30]][11,21,31] 类似地,我们可以用以下列表推导式将列表 中的每个元素变为自身的3倍:>>> [x*3 for x in [10,14,41]][30,42,123] 一般来说,列表推导式使用以下语法: 其中 是任意一个输入函数或表达式,而 通常是一个列表。(但是, 也可以是字符串。)请注意, 与 相同,同样是将函数 映射到列表 中的每个元素 上。>>> [len(s) for s in ['I','like', 'spam'] ][1,4,4] 这和使用 函数一样>>> list(map(len, ['I','like',spam'] ) )[1,4,4] 函数得到的是一个可迭代对象,需要用 将其展开。通过在表达式的末尾添加 和布尔值测试,列表推导式还具有 函数的功能。例如:>>> words =['oh', 'darn', wow', 'spam', 'ugh']>>> [x for x in words if len(x)== 4]['darn', 'spam'] 在这个例子中,我们定义了列表 来说明原始列表不必是匿名的。无论是否命名,列表推导式都一样:>>>[x for x in ['oh', 'darn', 'wow', 'spam', 'ugh']if len(x)== 4][ 'darn', 'spam'] 这就相当于一个循环表达式内嵌一个 结构:words =['oh', 'darn', wow', 'spam', 'ugh']for x in words: if len(x)== 4: print(x) 因此,我们自然会想到这样的写法:>>>[x[1:3] for x in ['oh', 'darn', 'wow', 'spam', 'ugh']if len(x)== 4][ 'ar', 'pa'] 一般来说,为列表推导式添加 的语法为: 其中 是一个函数, 是一个列表,在省略号 位置出现的是一个谓词表达式,其值为 或 。其结果是一个 值的列表,仅针对谓词表达式为 的那些 值。你选择组合使用 、 和 ,还是使用列表推导式,更多的是因为偏好,而不是因为它们能力不同。在线性互补算法的 代码使用了列表推导式。来源:数值分析与有限元编程