关于for循环:Python – 打印出用逗号分隔的列表

Python - printing out list separated with comma

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

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

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

1
0,1,2,3,4,

如何删除结尾","?


sep=","作为论据传给print()

你已经准备好打印声明了。

不需要循环,print有一个sep参数和end参数。

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

。一个小小的解释

print内置将任意数量的项目作为要打印的参数。任何非关键字参数将被打印出来,用sep分隔。sep的默认值是一个空格。

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

更改sep具有预期的结果。

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

每个参数都用str()串起来。将ITerable传递给print语句将ITerable作为一个参数进行字符串化。

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

但是,如果您将星号放在可ITerable前面,这会将其分解为单独的参数,并允许预期使用sep

1
2
3
4
5
>>> print(*["hello","world"], sep=" cruel")
hello cruel world

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

join作为替代方案

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

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

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

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

蛮力-非Python

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

1
2
3
4
5
6
7
8
>>>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


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

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

演示-

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

我使用上面的列表理解,因为当与str.join一起使用时,它比生成器表达式更快。


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

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

我们需要先将range(5)中的数字转换为字符串,以调用str.join()。我们用map()操作。然后我们用逗号,将从map()获得的字符串列表连接起来。