15

例如,我有一个这样的列表:

list1 = ['good', 'bad', 'tall', 'big']

list2 = ['boy', 'girl', 'guy', 'man']

我想列一个这样的清单:

list3 = ['goodboy', 'badgirl', 'tallguy', 'bigman']

我尝试了这样的事情:

list3=[]
list3 = list1 + list2

但这只会包含list1

所以我用for

list3 = []
for a in list1:
 for b in list2:
  c = a + b
  list3.append(c)

但这会导致列表过多(在这种情况下,4 * 4 = 16)

4

4 回答 4

23

您可以使用列表推导zip

list3 = [a + b for a, b in zip(list1, list2)]

zip通过组合你给它的可迭代元素中的元素来生成一个元组列表。因此,在您的情况下,它将从list1and返回成对的元素list2,直到先用完为止。

于 2012-07-28T17:14:21.310 回答
1

使用您尝试的循环的解决方案是一种方法,这比 Xions 解决方案对初学者更友好。

list3 = []
for index, item in enumerate(list1):
    list3.append(list1[index] + list2[index])

这也适用于更短的解决方案。使用 map() 和 lambda,我更喜欢这个而不是 zip,但这取决于每个人

list3 = map(lambda x, y: str(x) + str(y), list1, list2);
于 2012-07-28T17:17:17.613 回答
0

对于这个或任何两个相同大小的列表,您也可以像这样使用:

for i in range(len(list1)):
    list3[i]=list1[i]+list2[i]
于 2012-07-28T17:20:58.593 回答
0

使用拉链

list3 = []
for l1,l2 in zip(list1,list2):
    list3.append(l1+l2)

list3 = ['goodboy', 'badgirl', 'tallguy', 'bigman']

于 2012-07-28T17:21:52.577 回答