Python - 打印出用逗号分隔的列表

use*_*743 6 python printing for-loop

我正在编写一段代码,应该输出用逗号分隔的项目列表.该列表使用for循环生成.我用

for x in range(5):
    print(x, end=",")
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何摆脱列表中最后一个条目添加的最后一个逗号.它输出这个:

0,1,2,3,4,
Run Code Online (Sandbox Code Playgroud)

如何删除结尾','?

Gra*_*art 14

sep=","作为参数传递给print()

你几乎在那里有print语句.

不需要循环,print也有sep参数end.

>>> print(*range(5), sep=", ")
0, 1, 2, 3, 4
Run Code Online (Sandbox Code Playgroud)

一点解释

所述print内置需要作为要打印参数中的任何数量的项目.将打印任何非关键字参数,以相隔开sep.默认值为sep单个空格.

>>> print("hello", "world")
hello world
Run Code Online (Sandbox Code Playgroud)

改变sep有预期的结果.

>>> print("hello", "world", sep=" cruel ")
hello cruel world
Run Code Online (Sandbox Code Playgroud)

每个参数都用字符串化str().将iterable传递给print语句会将iterable作为一个参数进行字符串化.

>>> print(["hello", "world"], sep=" cruel ")
['hello', 'world']
Run Code Online (Sandbox Code Playgroud)

但是,如果您将星号放在迭代器前面,则会将其分解为单独的参数,并允许使用sep.

>>> print(*["hello", "world"], sep=" cruel ")
hello cruel world

>>> print(*range(5), sep="---")
0---1---2---3---4
Run Code Online (Sandbox Code Playgroud)

使用join作为替代

将iterable连接到具有给定分隔符的字符串的替代方法是使用join分隔符字符串的方法.

>>>print(" cruel ".join(["hello", "world"]))
hello cruel world
Run Code Online (Sandbox Code Playgroud)

这有点笨拙,因为它需要将非字符串元素显式转换为字符串.

>>>print(",".join([str(i) for i in range(5)]))
0,1,2,3,4
Run Code Online (Sandbox Code Playgroud)

蛮力 - 非pythonic

您建议的方法是使用循环来连接沿途添加逗号的字符串.当然,这会产生正确的结果,但是它的工作要困难得多.

>>>iterable = range(5)
>>>result = ""
>>>for item, i in enumerate(iterable):
>>>    result = result + str(item)
>>>    if i > len(iterable) - 1:
>>>        result = result + ","
>>>print(result)
0,1,2,3,4
Run Code Online (Sandbox Code Playgroud)


Ana*_*mar 7

您可以使用str.join()并创建要打印的字符串,然后打印它。例子 -

print(','.join([str(x) for x in range(5)]))
Run Code Online (Sandbox Code Playgroud)

演示 -

>>> print(','.join([str(x) for x in range(5)]))
0,1,2,3,4
Run Code Online (Sandbox Code Playgroud)

我使用上面的列表理解,因为当与str.join.