使用Python中的格式和循环创建编号列表

时间:2014-12-09 21:09:53

标签: python python-2.7

我觉得这是一个基本的问题/问题,但我无法得到它。我试图将输出编号为:

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)]

4 个答案:

答案 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]))