同时使用两个for循环

时间:2019-04-07 16:17:17

标签: python python-3.x

我有两个列表,其中包含未知数量的元素。一个包含名称的列表和另一种姓氏

'''赞这个'''

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
.
.
.

3 个答案:

答案 0 :(得分:5)

内置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}.')

答案 1 :(得分:3)

使用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]}')

答案 2 :(得分:-1)

如果两个列表的长度相同,则尝试遍历索引。

for i in range(len(names)):
    print(names[i],castes[i])