Python中将变量的每个项目分别打印到单独一行

6
我想在Python中打印一个包含数字的列表,但是当它打印列表项时,所有内容都打印在同一行上。
print ("{} ".format(ports))

这是我的输出。

[60, 89, 200]

如何以此表单方式查看结果:
60
89
200

我尝试过print ("\n".join(ports)),但它不起作用。
4个回答

10

循环遍历列表,每个项目占一行打印:

for port in ports:
    print(port)

或者在连接之前将您的整数转换为字符串:

print('\n'.join(map(str, ports)))

或者告诉print()使用换行符作为分隔符,并使用*扩展语法将列表作为单独的参数传递:

或者告诉print()使用换行符作为分隔符,并使用*扩展语法将列表作为单独的参数传递:
print(*ports, sep='\n')

演示:

>>> ports = [60, 89, 200]
>>> for port in ports:
...     print(port)
... 
60
89
200
>>> print('\n'.join(map(str, ports)))
60
89
200
>>> print(*ports, sep='\n')
60
89
200

很奇怪的是,当我们将鼠标悬停在打印函数上时弹出的文档中,并没有提到在使用 sep 时需要使用 *。 - LoMaPh
@LoMaPh:这不仅适用于print()。这是一般Python语法,可以将多个位置参数作为序列传递。请参见参数中的**(双星号/星号)和*(星号/星号)有什么作用? - Martijn Pieters

6
我已经尝试过print ("\n".join(ports)),但没有起作用。
你非常接近成功了。唯一的问题是,与print不同,join不会自动将东西转换为字符串;你必须自己做这件事。
例如:
print("\n".join(map(str, ports)))

… 或者 …

print("\n".join(str(port) for port in ports))

如果您不理解推导式或 map,它们都等同于以下内容:
ports_strs = []
for port in ports:
    ports_strs.append(str(port))
print("\n".join(ports_strs))
del ports_strs

换句话说,map(str, ports)会给你一个列表['60', '89', '200']。当然,这样写太麻烦了;如果你要使用显式的for语句,每次循环直接print(port)就行了,就像jramirez的答案一样。

* 其实我在这里有点作弊;两者都会给你一个迭代器,用于对一种不存在具有那些值的“惰性列表”进行迭代。但目前,我们可以假装它是一个列表。(在Python 2.x中也是如此。)


4

如果你使用的是Python 3.x:

>>> ports = [60, 89, 200]
>>> print(*ports, sep="\n")
60
89
200
>>>

否则,这将有效:
>>> ports = [60, 89, 200]
>>> for p in ports:
...     print p
...
60
89
200
>>>

2
ports = [60, 89, 200]

for p in ports:
    print (p)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接