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

时间:2015-09-26 11:02:59

标签: python for-loop printing

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

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

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

0,1,2,3,4,

如何删除结尾' ,' ?

6 个答案:

答案 0 :(得分:10)

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

你几乎与print语句在一起。

不需要循环,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作为替代

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

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

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

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

蛮力 - 非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

答案 1 :(得分:3)

您可以使用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一起使用时,它比生成器表达更快。

答案 2 :(得分:2)

为此,您可以使用str.join()

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

我们需要先将range(5)中的数字转换为字符串,然后调用str.join()。我们使用map()操作来做到这一点。然后,我们使用逗号map()加入从,获取的字符串列表。

答案 3 :(得分:0)

您可以使用的另一种形式,更接近原始代码:

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答案可能会更好地满足您程序的意图。不过,在某些情况下,这可能是一种有用的方法。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

示例代码:

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

结果:

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