繁体   English   中英

同时使用两个for循环[重复]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM