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

时间:2015-06-11 16:42:35

标签: python list separator

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

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

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

4 个答案:

答案 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。