[英]How to iterate over two lists in a specific order
我有两个清单:
list1 = ['A','C','E','G','A']
list2 = ['B','D','F','H','N']
我想将这些新名称和 append 创建到一个空列表中
A_vs_B
C_vs_D
E_vs_F
G_vs_H
A_vs_N
结构是,list1 中的第 1 项与列表 2 中的第 1 项,依此类推。 我只想要这些名字。
这是我到目前为止所做的
newlist = []
for i in list1:
for j in list 2:
name = i + '_vs_' + j
newlist.append(name)
问题在于它会在 list1 和 list2 之间创建所有可能的名称组合。 如何限制我的循环只产生我想要的名字?
使用zip() ,它接受两个列表(或其他可迭代对象)并创建一个可迭代的元组。 在 for 循环中,将元组解包到变量i
和j
newlist = []
for i, j in zip(list1, list2):
name = i + '_vs_' + j
newlist.append(name)
您可以使用格式字符串进一步改进您的代码:
newlist = []
for i, j in zip(list1, list2):
newlist.append(f'{i}_vs_{j}')
并使用列表理解:
newlist = [f'{i}_vs_{j}' for i, j in zip(list1, list2)]
你可以试试:
list1 = ['A','C','E','G','A']
list2 = ['B','D','F','H','N']
newlist = []
for i in range(0, len(list1)):
name = list1[i] + '_vs_' + list2[i]
newlist.append(name)
print(newlist)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.