Python 如何添加两个列表';元素合并到一个列表中?
例如,我有这样一个列表:Python 如何添加两个列表';元素合并到一个列表中?,python,list,Python,List,例如,我有这样一个列表: list1 = ['good', 'bad', 'tall', 'big'] list2 = ['boy', 'girl', 'guy', 'man'] list3 = ['goodboy', 'badgirl', 'tallguy', 'bigman'] for i in range(len(list1)): list3[i]=list1[i]+list2[i] 我想列一张这样的清单: list1 = ['good', 'bad', 'tall', '
list1 = ['good', 'bad', 'tall', 'big']
list2 = ['boy', 'girl', 'guy', 'man']
list3 = ['goodboy', 'badgirl', 'tallguy', 'bigman']
for i in range(len(list1)):
list3[i]=list1[i]+list2[i]
我想列一张这样的清单:
list1 = ['good', 'bad', 'tall', 'big']
list2 = ['boy', 'girl', 'guy', 'man']
list3 = ['goodboy', 'badgirl', 'tallguy', 'bigman']
for i in range(len(list1)):
list3[i]=list1[i]+list2[i]
我试过这样的方法:
list3=[]
list3 = list1 + list2
但这将只包含list1的值
所以我用了作为
:
list3 = []
for a in list1:
for b in list2:
c = a + b
list3.append(c)
但是它会导致太多的列表(在本例中,4*4=16个)您可以将列表理解与zip一起使用:
list3 = [a + b for a, b in zip(list1, list2)]
zip
通过组合您提供给它的iterables中的元素来生成元组列表。因此,在您的情况下,它将返回list1
和list2
中的元素对,以先用完的元素对为准。使用循环的解决方案是一种方法,这比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);
对于这个或任何两个相同大小的列表,您也可以这样使用:
list1 = ['good', 'bad', 'tall', 'big']
list2 = ['boy', 'girl', 'guy', 'man']
list3 = ['goodboy', 'badgirl', 'tallguy', 'bigman']
for i in range(len(list1)):
list3[i]=list1[i]+list2[i]
使用拉链
list3 = []
for l1,l2 in zip(list1,list2):
list3.append(l1+l2)
list3=['goodboy'、'badgirl'、'tallguy'、'bigman']
如果不使用项,为什么要使用enumerate?没有理由。为了得到索引,我想你也可以使用in range(),但我已经习惯了这种方式。你可以在循环中使用list3.append(item+list2[index])
,这样就可以使用item
。确切地说,我看不出有任何理由不定义item。如果他以后在做别的事情,可能会有用。我选择列出1[index],因为它更清楚你在做什么。事后看来,我可能会从其他答案中推荐类似于map
的解决方案:map(operator.add,list1,list2)
。使用带有map
的二进制+函数是比列表理解更不为人所知的特性,但是@Xion错了,与列表理解相比,它根本不可读,并且只有在处理非常大的数据集时才应该作为一种微优化的形式使用,map(add,list1,list2)
将执行得更快。但是在本例中,您最初的回答是正确的。我不知道您所说的“operator.add”或“add”对象是什么,但这对我来说是有效的,而且似乎短了一点:map(“”.join,zip(list1,list2))