假设我有数千种颜色的数组:
x=[blue, red, green,...]
如何删除每个字符串的最后一个字符,以便x1为[blu,re,gree,...]
我试过了:
x1=[]
for i in range (0,len(x)):
x1[i]=x[i:-1]
我得到的错误是:列表分配索引超出范围
知道怎么做吗?
答案 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来实现这个目的。