我正在编写一段代码,该代码将输出用逗号分隔的项目列表。使用for循环生成列表。我使用
for x in range(5):
print(x, end=",")
问题是,我不知道如何去掉列表中最后一个条目添加的最后一个逗号。它输出:
0,1,2,3,4,
号
如何删除结尾","?
把sep=","作为论据传给print()。
你已经准备好打印声明了。
不需要循环,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
蛮力-非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
。
你是说*range(5)吗?
是的,谢谢-会更新的
感谢您的回复!问题是我确实需要一个循环,我上面提供的代码是简单的代码。就在我提出问题的时候,我自己提出了一个解决方案。我做了一个字符串变量,我用逗号不断地向其中添加字符串,当循环上次运行时,我做了一个if语句,不向变量中添加逗号(我将所有字符串粘贴到该变量中)
没问题,它仍然可以在一定程度上简化您的代码来生成一个ITerable(列表?)使用循环,然后使用print将其呈现到控制台。不需要中间的字符串来保存逗号。
"用if语句连接的循环"方法非常笨拙。我要么选择print(*iterable, sep=",")要么选择print(",".join([str(i) for i in iterable]))。
您可以使用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一起使用时,它比生成器表达式更快。
str.join()对于从数据生成自定义字符串是一个很好的选择。但是,如果我们只是将字符串传递给print(),那么就没有必要了。只需使用print(*iterable, sep=",")。
为此,您可以使用str.join()。
In [1]: print ','.join(map(str,range(5)))
0,1,2,3,4
我们需要先将range(5)中的数字转换为字符串,以调用str.join()。我们用map()操作。然后我们用逗号,将从map()获得的字符串列表连接起来。