首页 > 解决方案 > 如何根据索引数量格式化列表

问题描述

所以我看到了一个可以用列表中的字符串格式化句子的程序。该程序如下所示:

animals = ["dog", "bear"]

safari = " I saw {} and {}

print(safari.format(*animals))

所以我想知道如果我有一个更大的列表,那么我将不得不放入这么多 {} 来格式化。这就是为什么我想创建一个程序,根据列表中有多少字符串来添加这些括号 {}。该程序看起来像这样但不起作用:

animals = ["dog", "cat", "mouse", "elephant", "bird", "lion", "llama", "flamingo", "cow", "whale", "shark", "fish", "bear", "pig"]

safari = "I saw "
for i in range(len(animals)):
x = " {} ".join(safari)

print(safari.format(*animals))

这真的很简单,但我不明白为什么它不起作用。

标签: pythonformat

解决方案


您的代码的问题在于它会将元素与{}. 你对如何.join工作感到困惑。

考虑以下:

>>> a=['a','b','c']
>>> ', '.join(a)
'a, b, c'

它通过将给定的可迭代对象与分隔符连接来返回一个字符串。

同样,这就是正在发生的事情'{}'.join(animals)

>>> '{}'.join(a)
'a{}b{}c'

你可以试试这个:

animals = ["dog", "cat", "mouse", "elephant", "bird", "lion", "llama", "flamingo", "cow", "whale", "shark", "fish", "bear", "pig"]
new='I saw '
new+=', '.join("{}" for i in animals)

print(new.format(*animals))

推荐阅读