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')