Python 逐行打印列表元素-是否可以使用格式
我非常喜欢使用Python 逐行打印列表元素-是否可以使用格式,python,string,list,string-formatting,Python,String,List,String Formatting,我非常喜欢使用.format() 是否可以使用它逐行打印元素。当然假设元素的数量是未知的 工作示例将不胜感激。您的意思是像打印('\n'.join(a_列表))?字符串格式可能会执行类似于“\n”的操作。加入(一个列表),但在这里似乎没有必要。(见更新) 问题是,.format根本不打印东西。这就是print的用途格式获取一些数据并返回字符串print是将该字符串输出到终端/标准输出的一种方法,但是print和.format实际上没有任何真正的关系 更新: 我收回了我说过的关于字符串格式化能够做
.format()
是否可以使用它逐行打印元素。当然假设元素的数量是未知的
工作示例将不胜感激。您的意思是像打印('\n'.join(a_列表))
?字符串格式可能会执行类似于“\n”的操作。加入(一个列表)
,但在这里似乎没有必要。(见更新)
问题是,.format
根本不打印东西。这就是print
的用途<代码>格式获取一些数据并返回字符串print
是将该字符串输出到终端/标准输出的一种方法,但是print
和.format
实际上没有任何真正的关系
更新:
我收回了我说过的关于字符串格式化能够做到这一点的话。格式模式本身预先定义了
format
方法的格式,因此,除了动态构建格式模式外,您不能使用format
。您可以在任何类型的字符串上使用字符串格式化程序,包括多行字符串。当然,如果你有一个格式字符串“{}\n{}\n{}”
,你可以把三个项目传递给它,它们都放在不同的行上
因此,对于要打印的元素的动态数量,您需要做的就是确保格式字符串也包含相同数量的格式项。解决这个问题的一种方法是动态构造格式字符串。例如:
'\n'.join('{}' for _ in range(len(my_list))).format(*my_list)
因此,您首先需要创建一个格式字符串,方法是让生成器为my_list
中的每个元素生成一个格式项{}
,并使用换行符将它们连接起来。因此,结果字符串如下所示:{}\n{}\n..\n{}\n{}
然后使用该字符串作为格式字符串,并对其调用format
,将未打包的列表作为参数传递给它。因此,您正确地填充了格式字符串的所有点
所以,你可以做到。然而,这并不是一个实际的想法。它看起来相当混乱,不能很好地传达你的意图。更好的方法是分别处理列表中的每个项目,并分别设置格式,然后将它们连接在一起:
'\n'.join('{}'.format(item) for item in my_list)
至于只是逐行打印元素,当然,更明显的方法是,不需要构建一个带换行符的长字符串,而是在项目上循环,然后逐个打印:
for item in my_list:
print(item)
# or use string formatting for the item here
print('{}'.format(item))
当然,正如Fourtheye所建议的,如果每个循环迭代都非常简单,那么您也可以将整个列表传递给print函数,并设置
sep='\n'
将元素分别打印在单独的行上。如果您使用的是Python3.x,并且您的意图是只打印元素列表,每行一个,然后你可以使用函数本身,就像这样
my_list = [1, 2, 3, 4]
print(*my_list, sep="\n")
from __future__ import print_function
*my_list
只需解压缩列表元素,并将它们作为参数传递给print
函数(是的,print
是Python 3.x中的一个函数)
输出
1
2
3
4
如果您使用的是Python2.x,那么您可以像这样从将来导入print函数
my_list = [1, 2, 3, 4]
print(*my_list, sep="\n")
from __future__ import print_function
注意:此导入应该是文件的第一行。保持简单
>>> myList = [2,3,5,6,5,4,3,2]
>>> for elem in myList:
'{}'.format(elem)
给予
这是您希望获得的吗?另一种方法是使用字符串乘法:
my_list = [1, 2, 3, 4, 5]
print(('{}\n'*len(my_list)).format(*my_list))
对于普通的旧打印,我会使用print命令的sep选项。如果您使用的是python日志记录工具(没有sep参数),格式化方法更有用。我们可以使用
join
逐行打印:
>>> x = ['a','b','c']
>>> print("\n".join(x))
a
b
c
还有一个不需要打印字符串的方法:
my_list = [1, 2, 3, 4]
str("{}\n"*len(my_list)).format(*my_list)
使用模块pprint-
导入pprint
>>>stuff=[“垃圾邮件”、“鸡蛋”、“伐木工人”、“骑士”、“ni”]
>>>stuff.insert(0,stuff[:])
>>>pp=pprint.预印机(缩进=4)
>>>pp.pprint(材料)
[['spam'、'egs'、'lumberjack'、'knights'、'ni'],
“垃圾邮件”,
“鸡蛋”,
“伐木工人”,
“骑士”,
'倪']
+1这绝对是正确的选择。很少有人知道
print()
中的sep
参数。如果您使用的是Python 2.7,只需从\uuuu future\uuuuuu导入print\u函数+1执行,但我们非常接近于违反Zen中的一个…显而易见的执行方法子句。在第一个示例中存在一些错误:回溯(最近的调用最后一次):File“”,第1行,在KeyError中:'\n'@andi对此表示抱歉;修复了它。我觉得正确的答案是这个和四个选项的组合:print(*{}.format(item)for item in myList],sep='\n')