我非常喜欢用.format()
是否可以使用它逐行打印元素。当然假设元素数量未知。
工作示例将不胜感激。
答案 0 :(得分:13)
如果您使用的是Python 3.x并且打算只打印元素列表,每行一个,那么您可以使用print
函数本身,就像这样
my_list = [1, 2, 3, 4]
print(*my_list, sep="\n")
*my_list
只需解压缩列表元素并将其中的每一个作为参数传递给print
函数(是的,print
是Python 3.x中的函数)。
<强>输出强>
1
2
3
4
如果您使用的是Python 2.x,那么您可以像以后一样从未来导入打印功能
from __future__ import print_function
注意:此导入应该是文件中的第一行。
答案 1 :(得分:7)
您可以在任何类型的字符串上使用字符串格式化程序,包括多行字符串。所以当然,如果你有一个格式字符串'{}\n{}\n{}'
,你可以传递三个项目,它们将全部放在不同的行上。
因此,对于要打印的动态数量的元素,您需要做的就是确保格式字符串也包含相同数量的格式项。解决此问题的一种方法是动态构造格式字符串。例如:
'\n'.join('{}' for _ in range(len(myList))).format(*myList)
因此,您首先要创建一个格式字符串,方法是让生成器在{}
中为每个元素生成一个格式项myList
,并使用换行符加入这些格式项。因此,结果字符串看起来像这样:{}\n{}\n…\n{}\n{}
。
然后使用该字符串作为格式字符串,并在其上调用format
,将解压缩列表作为参数传递给它。因此,您正确填写格式字符串的所有位置。
所以,你可以做到这一点。但是,这不是一个实际的想法。它看起来相当混乱,并没有很好地传达你的意图。更好的方法是分别处理列表中的每个项目,并单独格式化,只有然后将它们连接在一起:
'\n'.join('{}'.format(item) for item in myList)
至于只是逐行打印元素,当然更明显的方法是,不需要你用换行符构建一个长字符串,就是循环遍历项目并逐个打印它们:
for item in myList:
print(item)
# or use string formatting for the item here
print('{}'.format(item))
当然,正如thefourtheye所建议的,如果每个循环迭代都非常简单,您也可以将整个列表传递给print函数,并设置sep='\n'
以在每个单独的行上打印元素。
答案 2 :(得分:1)
你的意思是print('\n'.join(a_list))
?字符串格式化可能与'\n'.join(a_list)
类似,但这里似乎没有必要。 (见更新)
问题是,.format
根本不打印任何东西。这就是print
的用途。 format
获取一些数据并返回一个字符串。 print
是将该字符串输出到终端/标准输出的一种方法,但print
和.format
实际上没有真正的关系。
我收回了我所说的字符串格式化能够做到这一点。格式模式本身预先定义了format
方法的arity,因此,如果没有动态构建格式模式,则不能使用format
。
答案 3 :(得分:1)
保持简单
>>> myList = [2,3,5,6,5,4,3,2]
>>> for elem in myList:
'{}'.format(elem)
给出
'2'
'3'
'5'
'6'
'5'
'4'
'3'
'2'
这是你想要的吗?
答案 4 :(得分:0)
另一种方法是使用字符串乘法:
list = [1, 2, 3, 4, 5]
print( ( '{}\n' * len(list) ).format( *list ) )
对于普通的老式打印,我将使用print命令的sep选项。如果您使用的是python日志记录工具(不带sep参数),则format方法会更有用。
答案 5 :(得分:0)
我们可以使用fields[`ECStruct1`]
逐行打印:
join
答案 6 :(得分:0)
获得不需要打印的字符串的另一种方法:
my_list = [1, 2, 3, 4]
str("{}\n"*len(my_list)).format(*my_list)
答案 7 :(得分:0)
使用模块 pprint -Data pretty printer
>>> import pprint
>>> stuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
>>> stuff.insert(0, stuff[:])
>>> pp = pprint.PrettyPrinter(indent=4)
>>> pp.pprint(stuff)
[ ['spam', 'eggs', 'lumberjack', 'knights', 'ni'],
'spam',
'eggs',
'lumberjack',
'knights',
'ni']