Python 如何将多个字符串从一个列表复制并附加到另一个列表中
比方说,我有一个清单如下:Python 如何将多个字符串从一个列表复制并附加到另一个列表中,python,list,loops,Python,List,Loops,比方说,我有一个清单如下: list1 = ['jenny', 'bob', 'dan'] 我想将列表1中的每个项目复制到第二个列表中,如下所示: list2 = [('jenny', 'bob'), ('bob','dan'),('dan','jenny')] #This is my code: list2=[] for i in range(len(list2)): list2 += list1[i] print(list2) 糟糕的是,我的代码甚至不能将一个单词复制到列表2
list1 = ['jenny', 'bob', 'dan']
我想将列表1中的每个项目复制到第二个列表中,如下所示:
list2 = [('jenny', 'bob'), ('bob','dan'),('dan','jenny')]
#This is my code:
list2=[]
for i in range(len(list2)):
list2 += list1[i]
print(list2)
糟糕的是,我的代码甚至不能将一个单词复制到列表2中,而是一个字符一个字符地复制。您可以使用
itertools.combinations()
来获取组合:
list1 = ['jenny', 'bob', 'dan']
list2 = list(itertools.combinations(list1, r=2))
print(list2)
输出:
[('jenny', 'bob'), ('jenny', 'dan'), ('bob', 'dan')]
[('jenny', 'bob'), ('bob','dan'),('dan','jenny')]
如果希望每个项目与下一个项目合作(如果在循环结束时循环),可以使用模%
:
list1 = ['jenny', 'bob', 'dan']
list2 = []
for i, name in enumerate(list1):
name2 = list1[(i+1) % len(list1)]
list2.append((name, name2))
输出:
[('jenny', 'bob'), ('jenny', 'dan'), ('bob', 'dan')]
[('jenny', 'bob'), ('bob','dan'),('dan','jenny')]
这里有一个可能的解决办法<代码>列表2是使用第i个和(i+1)个元素构建的:
list1 = ['jenny', 'bob', 'dan']
list2 = [(el1, el2) for el1, el2 in zip(list1, list1[1:]+[list1[0]])]
输出:
[('jenny', 'bob'), ('bob', 'dan'), ('dan', 'jenny')]
如果您的目标是拥有2的所有组合,那么itertoolsUse变量list1中已经有了对该组合的支持,请不要编写该列表again@azroOP在使用简单的
for
循环时已经遇到了困难,如果目标是编写尽可能短的代码而不是显式的代码以避免混淆,我会把它写在一行中,而不是使用list1
以及创建一个要使用的变量,我说的是list(itertools.combines([list1,r=2))
@azro Point take and I stand correct.Answer updated.@VictorE,如果我再添加一个list>list3作为list3=['John','Delly','San','Doe'].我希望从列表1和列表3的组合中得到预期的输出:[('jenny','bob'),('bob','dan'),('dan','John'),('John','Delly'),('Delly','San'),('San','Doe')]?提前感谢一个没有解释的回答不重视任何东西。而且这不是一场比赛,不要告诉我你在后面做;)@riccardo,谢谢你的代码。在for语句之前(el1,el2)的目的是什么?