有以下两个清单:
sist = ["item1", "item2", "item3"]
numbers = [2,1,4]
我想打印sist
numbers
相同索引次数的元素。
这意味着在发布的示例中,我想要的输出是:
item1
item1
item2
item3
item3
item3
item3
这是我尝试过的,但没有成功:
for idx in xrange(len(sist)):
for num in numbers:
i = 0
print num
while i < num:
print sist[idx]
i = i + 1
我认为我正在以错误的方式迭代,因为我得到了这个输出:
2
item1
item1
1
item1
4
item1
item1
item1
item1
2
item2
item2
1
item2
4
item2
item2
item2
item2
2
item3
item3
1
item3
4
item3
item3
item3
item3
有人可以告诉我我做错了什么以及如何解决它?
答案 0 :(得分:5)
如果你想像这样使用嵌套的for
循环,你可以做
for item, rep in zip(sist, numbers):
for _ in range(rep):
print(item)
输出
item1
item1
item2
item3
item3
item3
item3
答案 1 :(得分:5)
你可以使用zip函数将两个列表连接到它们对应的索引,然后打印第一个元素(来自sist)作为第二个元素的次数(来自数字)
sist = ["item1", "item2", "item3"]
numbers = [2,1,4]
for x, y in zip(sist, numbers):
for _ in range(y):
print(x)
输出是 -
item1
item1
item2
item3
item3
item3
item3
答案 2 :(得分:4)
sist = ["item1", "item2", "item3"]
numbers = [2,1,4]
for i in range(len(numbers)):
for j in numbers[i]:
print(sist[i])
print('')
我认为这是您正在寻找的理想输出。它遍历数字数组并使用每个元素作为第二个for循环的范围。由于数字和sist的长度相同,因此您只需使用i
作为sist
的索引
答案 3 :(得分:3)
为了补充其他答案,您可以避免嵌套循环:
from __future__ import print_function # This isn't needed in Python 3.
for n, item in zip(numbers, sist):
print([item] * n, sep='\n')
答案 4 :(得分:2)
这需要嵌套的for循环,如下所示:
>>> sist = ["item1", "item2", "item3"]
>>> numbers = [2,1,4]
>>> for i in xrange(len(numbers)):
for j in xrange(numbers[i]):
print sist[i]
item1
item1
item2
item3
item3
item3
item3