[英]Use two for loops simultaneously [duplicate]
这个问题在这里已有答案:
我有两个列表,其中包含未知数量的元素。 一个包含名称和另一个种姓的列表
'''像这样'''
names = ['name1','name2',........'name99']
castes = ['cast1','cast2',........'cast99']
我想要这样打印:
Hello Name1 cast1.
Hello Name2 Cast2.
.
.
.
.
.
Hello Name99 Cast99
我试过这个,但它不起作用。
for i in names:
for j in castes:
print('Hello '+ i + j)
但它随机打印。 喜欢...
Hello Name1 Cast1
Hello Name1 Cast2
.
.
Hello Name1 Cast99
.
.
.
Hello Name2 Cast1
Hello Name2 Cast2
.
.
Hello Name3 Cast99
.
.
.
zip()
内置将执行您想要的操作,组合具有相应元素的列表。
>>> names = 'n1 n2 n3 n4'.split()
>>> castes = 'c1 c2 c3 c4'.split()
>>> pprint.pprint(list(zip(names, castes)), width=20)
[('n1', 'c1'),
('n2', 'c2'),
('n3', 'c3'),
('n4', 'c4')]
从那里你可以按照自己的意愿细化每个元组:
for name, caste in zip(names, castes):
print('Hello', name.title(), caste.title())
这适用于您指定的任意数量的属性:
names = 'n1 n2 n3 n4'.split()
castes = 'c1 c2 c3 c4'.split()
towns = 't1 t2 t3 t4'.split()
for name, caste, town in zip(names, castes, towns):
print(f'{name} ({caste}) lives in {town}.')
使用zip()
同时迭代两个列表:
names = ['name1','name2','name99']
castes = ['cast1','cast2','cast99']
for x, y in zip(names, castes):
print(f'Hello {x} {y}')
# Hello name1 cast1
# Hello name2 cast2
# Hello name99 cast99
这可以在没有zip()
情况下完成,只需一个循环。 您的方法的问题是您在其他内部使用了一个循环,因此内部循环重复的次数与外部指定的次数相同。
for i in range(len(names)):
print(f'Hello {names[i]} {castes[i]}')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.