繁体   English   中英

使用Python中的格式和循环制作编号列表

[英]Make a numbered list using format and loops in Python

我觉得这是一个基本问题/问题,但我无法理解。 我正在尝试对输出进行编号,如下所示:

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

假设您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])

不需要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])

如果只想遍历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调试器逐行执行代码-这会有所帮助)

看一下枚举

for i, x in enumerate(data):
  print("{0}. {1}: {2} times".format(i, x[0], x[1]))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM