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

2024-05-23 16:20:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python的新手。我正在编写一段非常简单的代码,以便使用带有.format()的“for”循环打印列表的内容,我希望输出如下,但出现以下错误:

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

我想要的预期输出: 一。大卫 2。彼得 三。迈克尔 四。约翰 5个。鲍勃

有人能帮我弄到那个输出吗?


Tags: 代码informat内容列表fornames错误
3条回答
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的^{}

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

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

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

如果要将它们全部打印在一行上,请使用endkwarg。

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

相关问题 更多 >