and*_*abs 9 python string list string-formatting
我非常喜欢用Python打印的新常规 .format()
是否可以使用它逐行打印元素.当然假设元素数量未知.
工作实例将不胜感激.
the*_*eye 17
如果您使用的是Python 3.x,并且打算只打印元素列表,每行一个,那么您可以使用print函数本身,就像这样
my_list = [1, 2, 3, 4]
print(*my_list, sep="\n")
Run Code Online (Sandbox Code Playgroud)
*my_list只需解压缩列表元素并将其中的每一个作为参数传递给print函数(是的,print是Python 3.x中的函数).
产量
1
2
3
4
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Python 2.x,那么您可以像以前一样从未来导入打印功能
from __future__ import print_function
Run Code Online (Sandbox Code Playgroud)
注意:此导入应该是文件中的第一行.
您可以在任何类型的字符串上使用字符串格式化程序,包括多行字符串.所以当然,如果你有一个格式字符串,'{}\n{}\n{}'你可以传递三个项目,它们将全部放在不同的行上.
因此,对于要打印的动态数量的元素,您需要做的就是确保格式字符串也包含相同数量的格式项.解决此问题的一种方法是动态构造格式字符串.例如:
'\n'.join('{}' for _ in range(len(myList))).format(*myList)
Run Code Online (Sandbox Code Playgroud)
因此,您首先要创建一个格式字符串,方法是让生成器{}为每个元素生成一个格式项myList,并使用换行符连接它们.所以结果字符串看起来像这样:{}\n{}\n…\n{}\n{}.
然后使用该字符串作为格式字符串,并调用format它,将解压缩列表作为参数传递给它.所以你正确地填充了格式字符串的所有位置.
所以,你可以做到.但是,这不是一个实际的想法.它看起来相当混乱,并没有很好地传达你的意图.更好的方法是分别处理列表中的每个项目,并单独格式化,然后将它们连接在一起:
'\n'.join('{}'.format(item) for item in myList)
Run Code Online (Sandbox Code Playgroud)
至于只是逐行打印元素,当然更明显的方法是,不需要你用换行符构建一个长字符串,就是循环遍历项目并逐个打印它们:
for item in myList:
print(item)
# or use string formatting for the item here
print('{}'.format(item))
Run Code Online (Sandbox Code Playgroud)
当然,正如所提出的那样,如果每个循环迭代都非常简单,您还可以将整个列表传递给print函数,并设置sep='\n'为在每个单独的行上打印元素.