打印以逗号分隔的列表,不带尾随逗号
- 2025-03-21 09:07:00
- admin 原创
- 59
问题描述:
我正在编写一段代码,该代码应输出以逗号分隔的项目列表。该列表是通过for
循环生成的:
for x in range(5):
print(x, end=",")
问题是我不知道如何删除列表中最后一个条目添加的最后一个逗号。它输出以下内容:
0,1,2,3,4,
我该如何删除结尾,
?
此处的大多数方法都基于使用单个print
调用。为了对每个x
值使用单独的调用,最后一个调用必须以不同的方式处理。这也可以做到 - 请参阅什么是检测“for”循环中最后一个元素的 Python 方式? - 但是,使用print
特定功能可以更好地解决这个特定问题。
解决方案 1:
sep=","
作为参数传递给print()
您几乎已经完成了打印声明。
不需要循环,printsep
也有参数end
。
>>> print(*range(5), sep=", ")
0, 1, 2, 3, 4
一点解释
内置函数print
接受任意数量的项目作为要打印的参数。任何非关键字参数都将被打印,并以 分隔sep
。 的默认值为sep
一个空格。
>>> print("hello", "world")
hello world
改变sep
已经有了预期的结果。
>>> print("hello", "world", sep=" cruel ")
hello cruel world
每个参数都像 一样被字符串化str()
。将可迭代对象传递给 print 语句将会把可迭代对象字符串化为一个参数。
>>> print(["hello", "world"], sep=" cruel ")
['hello', 'world']
但是,如果将星号放在可迭代对象前面,则会将其分解为单独的参数,并允许预期的用途sep
。
>>> print(*["hello", "world"], sep=" cruel ")
hello cruel world
>>> print(*range(5), sep="---")
0---1---2---3---4
join
作为替代方案
将可迭代对象连接到具有给定分隔符的字符串的替代方法是使用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 i, item in enumerate(iterable):
>>> result = result + str(item)
>>> if i > len(iterable) - 1:
>>> result = result + ","
>>>print(result)
0,1,2,3,4
解决方案 2:
您可以使用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
。
解决方案 3:
为此,您可以使用str.join()
。
In [1]: print ','.join(map(str,range(5)))
0,1,2,3,4
我们需要range(5)
先将 中的数字转换为字符串才能调用str.join()
。我们使用 操作来实现这一点。然后我们用逗号map()
连接从 中获得的字符串列表。map()
`,`
解决方案 4:
您可以使用的另一种形式,更接近您的原始代码:
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 风格的答案可能更能满足您程序的目的。不过,在某些情况下,这可能是一种有用的方法。
另一种可能性:
for x in range(5):
if x:
print (", ",x,end="")
else:
print (x, end="")
print()
解决方案 5:
for n in range(5):
if n == (5-1):
print(n, end='')
else:
print(n, end=',')
解决方案 6:
示例代码:
for i in range(10):
if i != 9:
print(i, end=", ")
else:
print(i)
结果:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
解决方案 7:
for x in range(5):
print(x, end=",")
print("");
解决方案 8:
列表项
''' 检查您的元素是否不是最后一个(索引= -1)并且仅添加逗号:
for i in lista:
if i != lista[-1]:
print((i), end= ", ")
else:
print((i), end=" ")
扫码咨询,免费领取项目管理大礼包!