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