蟒单行“为”表达(Python one-line “for” expression)

2019-07-21 18:13发布

我不知道如果我需要一个lambda,或别的东西。 不过,我仍然需要执行以下操作:

我有一个array = [1,2,3,4,5] 我需要把这个阵列,例如,到另一个阵列。 但是这一切都写一行。

for item in array:
    array2.append(item)

我知道,这是完全有可能通过的项目进行迭代,并使其一行。 但是,谷歌搜索和阅读手册并没有帮助我那么多......如果你可以给我一个提示或名字这件事情让我能找到的是什么,我真的很感激它。

更新:让我们这样说: array2 = SOME FANCY EXPRESSION THAT IS GOING TO GET ALL THE DATA FROM THE FIRST ONE

(例子中是不是真的。我只是想通过不同的数据块进行迭代,但这是我能想出的最好)

Answer 1:

你要找的关键词是列表内涵 :

>>> x = [1, 2, 3, 4, 5]
>>> y = [2*a for a in x if a % 2 == 1]
>>> print(y)
[2, 6, 10]


Answer 2:

for item in array: array2.append (item)

或者说,在这种情况下:

array2 += array


Answer 3:

如果你想在阵列复制

array2 = array[:]


Answer 4:

如果你真的只需要在一个阵列中添加项目到另一个时,“+”操作符重载已经做到这一点,顺便说一句:

a1 = [1,2,3,4,5]
a2 = [6,7,8,9]
a1 + a2
--> [1, 2, 3, 4, 5, 6, 7, 8, 9]


Answer 5:

即使array2.extend(array1)将工作。



Answer 6:

从列表中“A”创建一个新的列表“B”的元素,这是小于10使用元件

选项1:

A = [1, 1, 2, 3, 5, 8, 13, 4, 21, 34, 9, 55, 89]

B = []
for i in range(len(A)):
    if A[i] < 10:
        B.append(A[i])
print(B)

选项2:

A = [1, 1, 2, 3, 5, 8, 13, 4, 21, 34, 9, 55, 89]

B = [A[i] for i in range(len(A)) if A[i] < 10]
print(B)

结果:[1,1,2,3,5,8,4,9]



文章来源: Python one-line “for” expression
标签: python lambda