python-printing输出列表用逗号分隔

agyaoht7  于 2021-07-13  发布在  Java
关注(0)|答案(6)|浏览(405)

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

for x in range(5):
    print(x, end=",")

问题是我不知道如何去掉列表中最后一个条目所加的最后一个逗号。它输出:

0,1,2,3,4,

如何删除结尾“,”?

gmxoilav

gmxoilav1#

将sep=“,”作为参数传递到print()

你的打印声明就快到了。
不需要循环,打印有一个 sep 参数以及 end .

>>> print(*range(5), sep=", ")
0, 1, 2, 3, 4

一点解释

这个 print builtin接受任意数量的项作为要打印的参数。任何非关键字参数都将被打印出来,用 sep . 的默认值 sep 是一个单独的空间。

>>> print("hello", "world")
hello world

改变 sep 达到预期效果。

>>> print("hello", "world", sep=" cruel ")
hello cruel world

每一个论点都被严格化为 str() . 将iterable传递给print语句会将iterable字符串化为一个参数。

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

但是,如果在iterable前面加上星号,则会将其分解为单独的参数,并允许使用 sep .

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

>>> print(*range(5), sep="---")
0---1---2---3---4

使用join作为替代

将iteable连接到具有给定分隔符的字符串的另一种方法是使用 join 分隔符字符串的方法。

>>>print(" cruel ".join(["hello", "world"]))
hello cruel world

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

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

蛮力-非Python

您建议的方法是使用循环连接一个字符串,并在此过程中添加逗号。当然,这会产生正确的结果,但它的工作要困难得多。

>>>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
ctrmrzij

ctrmrzij2#

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

print(','.join([str(x) for x in range(5)]))

演示-

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

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

68de4m5k

68de4m5k3#

要做到这一点,你可以使用 str.join() .

In [1]: print ','.join(map(str,range(5)))
0,1,2,3,4

我们需要把数字转换成 range(5) 先打电话 str.join() . 我们使用 map() 操作。然后我们加入从 map() 用逗号 , .

vd2z7a6w

vd2z7a6w4#

您可以使用另一种更接近原始代码的表单:

opt_comma="" # no comma on first print
for x in range(5):
    print (opt_comma,x,sep="",end="") # we are manually handling sep and end
    opt_comma="," # use comma for prints after the first one
print() # force new line

当然,这个线程中的其他更具python风格的答案可能更好地服务于程序的意图。不过,在某些情况下,这可能是一种有用的方法。

kuuvgm7e

kuuvgm7e5#

for n in range(5):
    if n == (5-1):
        print(n, end='')
    else:
        print(n, end=',')
svmlkihl

svmlkihl6#

示例代码:

for i in range(10):
    if i != 9:
        print(i, end=", ")
    else:
        print(i)

结果:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9

相关问题