如何从列表末尾删除分隔符 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])
如何删除列表末尾的最后一个分隔符?
这是我创建的用于在列表元素之间放置任何分隔符的函数。
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])