如何在列表中添加行号?

时间:2018-02-14 22:54:20

标签: python python-3.x list string-formatting enumerate

我有一个列表,我想添加计数。

list1 = ['John', 'Maria',',','and','Danny', 'are','#','1','surfers','.']

我希望我的输出看起来像。

  
      
  1. 约翰
  2.   
  3. 玛利亚
  4.   
  5.   
  6.   
  7. 丹尼
  8.   
  9.   
  10.   
  11. 1
  12.   
  13. 冲浪者
  14.   
  15.   

我的代码看起来像这样。我不能使用任何库。

count = 1
for count,a in enumerate(list1):
     count += 1
print("{0}{1}".format(count, a)) 

4 个答案:

答案 0 :(得分:3)

请注意以下事项:

  • enumerate是一个内置的计数器,您不需要自己递增。
  • 您的缩进不正确,因此print未在循环中应用。
  • enumerate有一个可选的start参数,因此您可以从1而不是0开始。

这是一个解决方案。

list1 = ['John', 'Maria',',','and','Danny', 'are','#','1','surfers','.']

for count, a in enumerate(list1, 1):
    print("{0}. {1}".format(count, a))

# 1. John
# 2. Maria
# 3. ,
# 4. and
# 5. Danny
# 6. are
# 7. #
# 8. 1
# 9. surfers
# 10. .

答案 1 :(得分:1)

enumerate将生成一个元组,其中第一个值是循环中的索引。它从零开始计数,因此如果要在一个列表中启动列表,则需要将计数增加1.

list1 = ['John', 'Maria',',','and','Danny', 'are','#','1','surfers','.']

for count, a in enumerate(list1):
    print("{}. {}".format(count+1, a))

答案 2 :(得分:1)

你几乎拥有它。试试这个:

for index, a in enumerate(list1):
    print('%-1d. %s' % (index + 1, a)

打印:

  
      
  1. 约翰
  2.   
  3. 玛利亚
  4.   
  5.   
  6.   
  7. 丹尼
  8.   
  9.   
  10.   
  11. 1
  12.   
  13. 冲浪者
  14.   
  15.   

根据需要。 请注意+1,因为枚举返回的索引是零索引的!

答案 3 :(得分:1)

使用zip将两个列表放在一起,以便列表理解

list1 = ['John', 'Maria',',','and','Danny', 'are','#','1','surfers','.']
n = len(list1)
numbered_list_str = '\n'.join([str(i) + '. ' + x for i, x in zip(range(1, n+1), list1)])
print(numbered_list_str)
  
      
  1. 约翰
  2.   
  3. 玛利亚
  4.   
  5.   
  6.   
  7. 丹尼
  8.   
  9.   
  10.   
  11. 1
  12.   
  13. 冲浪者
  14.   
  15.