如何从列表末尾删除分隔符 python

how to remove seperator from the end of a list python

如何删除列表末尾的最后一个分隔符?

这是我创建的用于在列表元素之间放置任何分隔符的函数。

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

只需 return 到 array_length-len(9 月),它应该可以工作

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 peters 谢谢:)

使用 join() 方法是最好的解决方案,但如果您真的想自己做,请将 return 更改为以下内容:

return new_str[:-len(sep)]

这将 return 一个由您构建的字符串组成的字符串 除了 最后一个字符。

更新

感谢 Martijn Peters 指出我的原作没有正确处理 len > 1 的分隔符。

只需使用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])

不幸的是,这非常不 Pythonic,而且效率低下,因为 Python 必须为每个 + 连接复制到一个新字符串中。

有很多方法!
如果你想打印你可以使用 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])