我有两个列表,其中包含未知数量的元素。一个包含名称的列表和另一种姓氏
'''赞这个'''
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
.
.
.
答案 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])