例如,我有一个这样的列表:
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)
我该怎么办?任何帮助都会非常棒!
答案 0 :(得分:22)
您可以将列表推导与zip
:
list3 = [a + b for a, b in zip(list1, list2)]
zip
通过组合您提供的迭代中的元素来生成元组列表。因此,在您的情况下,它会返回list1
和list2
中的元素对,直到最先耗尽的元素。
答案 1 :(得分: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);
答案 2 :(得分:0)
对于这个或任何两个相同大小的列表,你也可以这样使用:
for i in range(len(list1)):
list3[i]=list1[i]+list2[i]
答案 3 :(得分:0)
使用zip
list3 = []
for l1,l2 in zip(list1,list2):
list3.append(l1+l2)
list3 = ['goodboy', 'badgirl', 'tallguy', 'bigman']