在Python中单独打印变量的每个项目

MSK*_*MSK 6 python format variables line

我试图在Python中打印包含数字的列表,当它打印列表中的项目时,所有打印在同一行.

print ("{} ".format(ports))
Run Code Online (Sandbox Code Playgroud)

这是我的输出

[60, 89, 200]
Run Code Online (Sandbox Code Playgroud)

如何以这种形式查看结果:

60
89
200
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 6

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

for port in ports:
    print(port)
Run Code Online (Sandbox Code Playgroud)

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

print('\n'.join(map(str, ports)))
Run Code Online (Sandbox Code Playgroud)

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

print(*ports, sep='\n')
Run Code Online (Sandbox Code Playgroud)

演示:

>>> 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
Run Code Online (Sandbox Code Playgroud)


aba*_*ert 6

我试过print("\n".join(ports))但是没有用.

你很近.唯一的问题是,不像print,join没有东西会自动转换为字符串; 你必须自己做.

例如:

print("\n".join(map(str, ports)))
Run Code Online (Sandbox Code Playgroud)

… 要么 …

print("\n".join(str(port) for port in ports))
Run Code Online (Sandbox Code Playgroud)

如果您不理解任何理解,或者map两者都与此相同*:

ports_strs = []
for port in ports:
    ports_strs.append(str(port))
print("\n".join(ports_strs))
del ports_strs
Run Code Online (Sandbox Code Playgroud)

换句话说,map(str, ports)会给你列表['60', '89', '200'].

当然,从长远来看写出来是很愚蠢的.如果你打算使用一个明确的for陈述,你也可以print(port)直接每次循环,就像在jramirez的答案中一样.


*我其实在这里作弊; 两者都给你一个"惰性列表" 的迭代器,它实际上并不存在这些值.但就目前而言,我们可以假装它是一个列表.(在Python 2.x中,它是.)


jra*_*rez 2

ports = [60, 89, 200]

for p in ports:
    print (p)
Run Code Online (Sandbox Code Playgroud)