删除一系列字符串的最后一个字符

时间:2018-04-09 10:25:41

标签: python string

假设我有数千种颜色的数组:

x=[blue, red, green,...]

如何删除每个字符串的最后一个字符,以便x1为[blu,re,gree,...]

我试过了:

x1=[]
for i in range (0,len(x)):
    x1[i]=x[i:-1]

我得到的错误是:列表分配索引超出范围

知道怎么做吗?

5 个答案:

答案 0 :(得分:6)

您收到错误,因为x1是一个空列表。第一次迭代尝试分配给不存在x1[0]的{​​{1}}。

假设IndexError是一个字符串列表,更多的pythonic方法是根本不使用任何索引:

x

答案 1 :(得分:3)

如果x1 = [color[:-1] for color in x] 是字符串列表,则x是字符串。如果您想要除该字符串的最后一个字符以外的所有字符,则为x[i]

所以你可以写

x[i][:-1]

或者你可以将其缩短为

x1 = []
for i in range(0, len(x)):
    x1.append(x[i][:-1])

答案 2 :(得分:1)

lst = ["blue", "red", "green"]

print [i[:-1] for i in lst]

答案 3 :(得分:1)

列表理解是解决问题的最佳方法:

x = ['blue', 'red', 'green']
new_x = [color[:-1] for color in x]

但您也可以使用map函数来实现结果:

x = ['blue', 'red', 'green']
new_x = list(map(lambda color: color[:-1], x))

我不确定哪种方式在性能上更好,但由于没有人提及map所以...

答案 4 :(得分:0)

由于这个原因你得到错误的原因 IndexError: list assignment index out of range

因此你需要使用.append来实现这个目的。