6

我正在尝试在 Python 中打印一个包含数字的列表,并且当它打印列表中的项目时,它们都打印在同一行上。

print ("{} ".format(ports))

这是我的输出

[60, 89, 200]

我怎样才能看到这种形式的结果:

60
89
200

我已经尝试过print ("\n".join(ports)),但这不起作用。

4

4 回答 4

10

循环列表并在新行上打印每个项目:

for port in ports:
    print(port)

或在加入之前将整数转换为字符串:

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

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

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
于 2013-11-12T22:22:17.263 回答
6

我试过 print ("\n".join(ports)) 但不起作用。

你很亲密。唯一的问题是,与 不同printjoin它不会自动将内容转换为字符串;你必须自己做。

例如:

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

……或者……</p>

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 中,确实如此。)

于 2013-11-12T22:22:37.500 回答
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
>>>
于 2013-11-12T22:23:35.410 回答
2
ports = [60, 89, 200]

for p in ports:
    print (p)
于 2013-11-12T22:21:57.850 回答