Python-打印以逗号分隔的列表
我正在编写一段代码,它应该输出一个用逗号分隔的项目列表。该列表是使用for循环生成的。我使用Python-打印以逗号分隔的列表,python,for-loop,printing,Python,For Loop,Printing,我正在编写一段代码,它应该输出一个用逗号分隔的项目列表。该列表是使用for循环生成的。我使用 for x in range(5): print(x, end=",") 问题是我不知道如何去掉列表中最后一个条目添加的最后一个逗号。它的输出是: 0,1,2,3,4, 如何删除结尾“,”?您可以使用并创建要打印的字符串,然后打印它。范例- print(','.join([str(x) for x in range(5)])) 演示- >>> print(','.join
for x in range(5):
print(x, end=",")
问题是我不知道如何去掉列表中最后一个条目添加的最后一个逗号。它的输出是:
0,1,2,3,4,
如何删除结尾“,”?您可以使用并创建要打印的字符串,然后打印它。范例-
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一起使用时,可以使用
我们需要先将范围(5)
中的数字转换为字符串,以调用str.join()
。我们使用操作来实现这一点。然后我们用逗号,
连接从map()
获得的字符串列表 将sep=“,”
作为参数传递到print()
你就快拿到打印报表了
不需要循环,它有一个sep
参数以及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()
。将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
蛮力-非蟒蛇
您建议的方法是使用循环连接一个字符串,并在此过程中添加逗号。当然,这会产生正确的结果,但其难度要大得多
>>>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
您可以使用另一种更接近原始代码的形式:
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 n in range(5):
if n == (5-1):
print(n, end='')
else:
print(n, end=',')
for i in range(10):
if i != 9:
print(i, end=", ")
else:
print(i)
结果:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
您的意思是*范围(5)
?谢谢您的回复!问题是我确实需要一个循环,我上面提供的代码是简化的代码。就在我发布问题的时候,我自己提出了一个解决方案。我制作了一个字符串变量,在这个变量中我一直使用逗号向添加字符串,当循环最后一次运行时,我制作了一个if语句,不向我的变量中添加逗号(我将所有字符串粘贴到该变量)。没问题,它仍然可以在一定程度上简化代码,用循环生成一个iterable(列表?),然后使用print将其呈现到控制台。不需要插入字符串来保存逗号,“循环连接if语句”的方法非常笨拙。我会选择print(*iterable,sep=“,”)
或print(“,”).join([str(I)表示iterable中的I])
str.join()
将是从数据生成自定义字符串的良好选择。但是,如果我们只是将字符串传递给print()
,那么就没有必要了。只需使用print(*iterable,sep=“,”)
。在这种特殊情况下,这很笨拙,但在更复杂的情况下,这是一种非常有用的技术,当您希望在缓慢循环的内容之间(而不是之前或之后)设置分隔符时。
0, 1, 2, 3, 4, 5, 6, 7, 8, 9