如何在 Python 中使用 .format() 在“for”循环中打印列表?
Posted
技术标签:
【中文标题】如何在 Python 中使用 .format() 在“for”循环中打印列表?【英文标题】:How to print the list in 'for' loop using .format() in Python? 【发布时间】:2019-01-18 14:36:32 【问题描述】:我是 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
我想要的预期输出: 1.大卫 2.彼得 3.迈克尔 4.约翰 5.鲍勃
有人可以帮我得到那个输出吗?
【问题讨论】:
请格式化您的代码。如果没有适当的缩进,Python 是不可读的。编辑您的评论并使用代码格式化按钮。 我仍然不确定您希望如何格式化输出。你想让它们都在一条线上吗? 嘿@gilch ...因为这是我在堆栈溢出中的第一篇文章...我不知道如何正确编写内容:) ...我用缩进正确编写了代码(采取关心)在 PyCharm IDE 中。我希望输出如下 - 1. David \n2。彼得\n3。迈克尔\n4。约翰\n5。鲍勃 【参考方案1】:好吧,根据你们的建议,我试过了。我得到了预期的输出
>>> 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
【讨论】:
【参考方案2】: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
【讨论】:
【参考方案3】:names = ['David', 'Peter', 'Michael', 'John', 'Bob']
for i in range (len (names)):
print(".".format(i + 1, names[i]))
Python 列表索引引用不能是字符串。使用整数而不是索引本身(它们是字符串)通过 for 循环遍历列表将解决此问题。 这是一个错误消息对诊断问题非常有用的示例。
【讨论】:
非常感谢@Matias Cicero .. 这个简单的回答帮助我理解了这个概念。【参考方案4】:names
是 list
的 str
,因此,当您对其进行迭代时,您将获得 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
【讨论】:
index + 1
将输出从 1 而不是 0 开始的名称。小幅编辑,但可以得到更好的输出。以上是关于如何在 Python 中使用 .format() 在“for”循环中打印列表?的主要内容,如果未能解决你的问题,请参考以下文章
python 使用.format()在Python中打印变量值