如何从列表末尾删除最后一个分隔符?
这是我创建的一个函数,用于在列表的元素之间放置任何分隔符。
def to_string(my_list, sep=' '):
new_str = "List is: "
index = 0
for k in my_list:
new_str = new_str + str(k) + sep
return new_str
my_list = [1,2,3,4,5]
string = to_string(my_list, sep='-')
print(string)
当前输出:
List is: 1-2-3-4-5-
我想要的是:
List is: 1-2-3-4-5
答案 0 :(得分:3)
只需使用join()
方法:
def to_string(my_list, sep=' '):
return "List is: " + sep.join(map(str, my_list))
如果您想使用range()函数:
for i in range(len(my_list)):
if i > 0:
new_str += sep
new_str += str(my_list[i])
遗憾的是,这非常恐怖,效率低下,因为Python必须为每个+
连接复制成一个新字符串。
答案 1 :(得分:3)
有很多方法!
如果要打印,可以使用print
功能:
myList = [1,2,3,4,5]
print(*myList, sep=',') #1,2,3,4,5 #or
print(*myList, sep=',', end=';') #1,2,3,4,5; #if you like diferent ending...
*
使myList作为五个独立的参数工作而不是一个列表。
如果您想要一个字符串,可以使用str.join
myList = [1,2,3,4,5]
sep = ','
myString = sep.join(str(i) for i in myList) #The args need to be str
print(myString) #1,2,3,4,5
但是如果你喜欢它,你必须改变一点点你的功能,所以它看起来像:
def to_string(my_list, sep=' '):
new_str=str(my_list[0])
for i in my_list[1:]: #Skip my_list[0]
new_str += sep + str(i)
return new_str
myList = [1,2,3,4,5]
print(to_string(myList, ',')) #1,2,3,4,5
<强> [编辑] 强> 回答@rks当然可以使用范围:
for i in range(1, len(my_list)): #Skip my_list[0]
new_str += sep + str(my_list[i])
答案 2 :(得分:0)
返回到array_length-len(sep),它应该工作
import StringIO
def to_string(my_list, sep=' '):
new_str = StringIO.StringIO()
new_str.write("List is: ")
for k in my_list:
new_str.write(str(k)+sep)
result = new_str.getvalue()
new_str.close()
return result[:-len(sep)]
my_list = [1,2,3,4,5]
string = to_string(my_list, sep='-')
print(string)
@Martjin彼得谢谢:)
答案 3 :(得分:0)
使用printf( "%d", *(int *) 0 );
方法是您的最佳解决方案,但如果您真的想自己动手,请将join()
更改为以下内容:
return
这将返回一个字符串,其中包含您构建的字符串,但最后一个字符除外。
感谢Martijn Peters指出我的原始版本没有正确处理len&gt;的分隔符。 1。