如何在列表中添加行号?

How to add line numbers in a list?

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

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

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

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

我的代码如下所示。我无法使用任何库。

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

注意以下几点:

  • 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. .

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

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

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

你快搞定了。试试这个:

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

这会打印:

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

随意。 注意 +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. John
  2. Maria
  3. ,
  4. and
  5. Danny
  6. are
  7. #
  8. 1
  9. surfers
  10. .