我觉得这是一个基本的问题/问题,但我无法得到它。我试图将输出编号为:
1. Info1: 5 times
2. Info2: 2 times
3. Info3: 8 times
4. Info4: 9 times
使用此代码:
for i in range(0,10):
for x in data:
print "{0}. {1}: {2} times".format(i, x[0], x[1])
但它只打印了10次。如何让它为上面的每个项目编号?
数据如下所示:
[('Plants and Animals', 1347), ('Dr. Dog', 1198), ('The Dodos', 1176), ('Broken Social Scene', 1092), ('The Beatles', 1014)]
答案 0 :(得分:2)
假设x是元组列表。你只需要循环一次。
x = [('Info1',5),('Info2',2), ('Info3',8),('Info4',9)]
for i in range(0,10):
print "{0}. {1}: {2} times".format(i+1, x[i][0], x[i][1])
然而,如果x少于10个元素,使用它会遇到IndexError。所以不要使用:
for i in range(0,10):
你可以使用:
for i in range(len(x)):
甚至更简单地使用enumerate
data = [('Info1',5),('Info2',2), ('Info3',8),('Info4',9)]
for i,x in enumerate(data):
print "{0}. {1}: {2} times".format(i+1, x[0], x[1])
答案 1 :(得分:0)
不需要2个循环。如果您希望第一个输出的数字为1
,也应该使用i + 1
for i in range(0, len(data)):
print "{0}. {1}: {2} times".format(i+1, data[i][0], data[i][1])
答案 2 :(得分:0)
如果你想要的只是循环遍历data
的所有值,那么你只需要内循环(for x in data:...
)。
所以这是:
for x in data:
print "{0}. {1}: {2} times".format(x[0], x[0], x[1])
或者如果x [0]不会总是像1,2,3 ......
counter = 1
for x in data:
print "{0}. {1}: {2} times".format(counter, x[0], x[1])
counter += 1
现在您的问题是您已经添加了一个额外的外循环(for i in range(0,10)
),现在您的代码执行内循环10次(每次使用不同的i值)。但这就是你从python那里要求用这些额外的行来做的事情。
要让它假装你是计算机并开始遵循程序的命令(你也可以使用python调试器逐行执行你的代码 - 它有帮助)
答案 3 :(得分:0)
看看enumerate。
for i, x in enumerate(data):
print("{0}. {1}: {2} times".format(i, x[0], x[1]))