如何使用 Python 中的 .format() 在 'for' 循环中打印列表?

How to print the list in 'for' loop using .format() in Python?

我是 Python 的新手。我正在编写一段非常简单的代码来使用 'for' 循环和 .format() 打印列表的内容,我想要如下输出,但我收到此错误:

names = ['David', 'Peter', 'Michael', 'John', 'Bob']
for i in names:
    print("{}.{}".format(i, names[i])) 

print("{}.{}".format(i,breakfastMenu[i]))
TypeError: list indices must be integers or slices, not str

我想要的预期输出: 1.大卫 2.彼得 3.迈克尔 4.约翰 5.鲍勃

有人可以帮我得到那个输出吗?

Python 的 for...in 语句类似于其他语言中的 foreach。您希望 enumerate 获取索引。

for i, name in enumerate(names):
    print("{}. {}".format(i+1, name))

如果您想将它们全部打印在一行中,请使用 end kwarg。

for i, name in enumerate(names):
    print("{}. {}".format(i+1, name), end=" ")
print()  # for the final newline

1. David 2. Peter 3. Michael 4. John 5. Bob
names = ['David', 'Peter', 'Michael', 'John', 'Bob']
for i in range (len (names)):
    print("{}.{}".format(i + 1, names[i]))

Python 列表索引引用不能是字符串。使用整数而不是索引本身(字符串)通过 for 循环遍历列表将解决此问题。 这是一个错误消息在诊断问题时非常有用的示例。

namesstrlist,因此,当您 迭代 时,您将得到 str 值。

for i in names:
   print(i + 'other_str') # i is a str

为了随机访问 list 上的元素,您需要指定它们的 index,这需要是 int.

如果你想得到元素对应的索引,当你遍历它们时,你可以使用Python的enumerate:

for index, name, in enumerate(names):
    print('{}.{}'.format(index, names[index]))

请注意,您实际上不需要通过 names[index] 访问名称,因为您在迭代时已经获取了该元素。因此,上面的内容类似于以下内容:

for index, name in enumerate(names):
    print('{}.{}'.format(index, name))

输出:

0.David
1.Peter
2.Michael
3.John
4.Bob

好吧,根据我尝试过的你们的建议答案。我得到了预期的输出

>>> names = ['David', 'Peter', 'Michael', 'John', 'Bob']
>>> for i in range(len(names)):
    print('{}.{}'.format(i+1, names[i]))

我能看到的输出:

1.David
2.Peter
3.Michael
4.John
5.Bob