我正在尝试循环列表的每个元素,并将列表的每个元素附加到格式为aa, bb, cc, dd, ee, ....
我的循环是这样的:
string = ""
for num in sorted(list):
string = "xyz" + "-" + str(list[num])
string = string + ", "
return string
输出的格式类似于xyz - 1, xyz - 3, xyz -6,
如何在没有最后一个逗号的情况下以这样的格式结束
xyz - 1, xyz - 3, xyz -6
?
答案 0 :(得分:2)
您可以使用str.join
:
string = ', '.join("xyz-"+str(x) for x in sorted(list))
在充当分隔符的字符串上调用 .join
:它将插入元素之间(但不会在最后一个元素之后)。在join
中,您需要提供一个可迭代(list,tuple,set,generator,...),它提供应该连接在一起的字符串。
在这种情况下,我们编写了一个迭代器,对于x
中的每个sorted(list)
生成一个字符串"xyz-"+str(x)
,这些产品将连接在一起。
<强>错误吗
您的代码中可能还有一个错误:
for num in sorted(list):
string = "xyz" + "-" + str(list[num])
如果在列表上使用for
,则会获得元素,而不是索引。因此它应该是num
而不是list[num]
。
答案 1 :(得分:1)
使用str.join
和列表理解来避免这样做:
return ", ".join(["xyz-{}".format(num) for num in sorted(lst)])
(并注意您的代码还有其他问题:使用list
作为变量,执行lst[num]
需要num
是2个示例)
(([
不是拼写错误:创建列表理解而不是生成器理解可以让join
更快地工作:List vs generator comprehension speed with join function)