索引器:列表索引超出范围,如何删除列表中的对象?

2024-05-16 18:18:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始学习python

我想删除每行的最后一个数字,如何才能做到这一点而不出错

data = [[144, 128, 183, 0],
[208, 87, 125, 0],
[233, 176, 196, 0],
[4, 190, 163, 0],
[249, 95, 211, 1]]

共有489行,但为了更好的可读性,我缩短了它

x = 0


for datapoints in range(489):
    data.remove([x][3])
    x += 1

print(data)

Tags: infordatarange数字removeprint可读性
3条回答

您可以使用list comprehension

[i[:len(i)-1] for i in data]
Output:
[144, 128, 183],
 [208, 87, 125],
 [233, 176, 196],
 [4, 190, 163],
 [249, 95, 211]]

如果你想用del

for datapoints in range(len(data)):
    del data[datapoints][-1]

可以对列表中的每个子列表使用pop方法

data = [[144, 128, 183, 0],
[208, 87, 125, 0],
[233, 176, 196, 0],
[4, 190, 163, 0],
[249, 95, 211, 1]]
for i in range(len(data)):
    data[i].pop()
print(data)

输出

[[144, 128, 183], [208, 87, 125], [233, 176, 196], [4, 190, 163], [249, 95, 211]]

一个包含列表理解的行(无需指定行数):

[sublist[:-1] for sublist in data]

其中-1是子列表中的最后一个元素,[:-1]指定要包含所有元素,直到该元素(非包含)

相关问题 更多 >