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

时间:2018-08-11 01:16:53

标签: python list for-loop string.format

我是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.鲍勃

有人可以帮助我获得该输出吗?

4 个答案:

答案 0 :(得分:2)

@objc

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

names = ['David', 'Peter', 'Michael', 'John', 'Bob'] for i in range (len (names)): print("{}.{}".format(i + 1, names[i])) names中的list,因此,当您迭代时,将获得str值。

str

为了随机访问for i in names: print(i + 'other_str') # i is a str 上的元素,您需要指定其list,该元素必须为index

如果要获取元素的对应索引,则在对其进行迭代时,可以使用Python的enumerate

int

请注意,您实际上不需要通过for index, name, in enumerate(names): print('{}.{}'.format(index, names[index])) 访问名称,因为在迭代时已经获得了元素。因此,以上内容与以下内容相似:

names[index]

哪个输出:

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

答案 3 :(得分: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