Python 同时使用两个for循环

Python 同时使用两个for循环,python,python-3.x,Python,Python 3.x,我有两个元素数量未知的列表。一份名单上有姓名,另一份名单上有种姓 “像这样” 我想要这样的印刷品: 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 . . Hell

我有两个元素数量未知的列表。一份名单上有姓名,另一份名单上有种姓

“像这样”

我想要这样的印刷品:

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
.
.
.
内置的会做你想做的事, 组合具有相应元素的列表

>>> 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}.')
用于同时迭代两个列表:

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]}')
for i in range(len(names)):
    print(f'Hello {names[i]} {castes[i]}')