如何从元组列表中删除第一个元素?



我有一个像这样的元组列表:

x = [("a","b","c"), ("d","e","f"), ("g","h","i"), ("j","k","l")]

,我想从每个索引中删除第一个元素,如下:

x = [("b","c"), ("e","f"), ("h","i"), ("k","l")]

我试过使用pop.xremove.x这样不工作。我想是因为列表有不能改变的元组?:

for i in result:
i.pop(0)

所以我试图将元组列表转换为使用zip函数的列表,但我得到一个错误:

AttributeError: type object 'zip' has no attribute 'result'

知道我做错了什么吗?

感谢所有有用的答案!有很多方法可以解决我遇到的其他问题=D

python中的元组是不可更改的对象。你可以在里面存储任何你想要的东西,但是一旦它被声明了,你就不能把它改回来了。

这里有一个指向元组的链接:https://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences(第5.3节)

pop函数从列表中删除最后一个元素并返回它。由于您的列表中有元组,因此在元组列表中调用pop函数只会返回并删除列表中的最后一个元组。

元组是不可变的,所以你不能改变它们。但是,您可以使用新元组列表覆盖您的列表:

x = [('a','b','c'), ('d','e','f'), ('g','h','i'), ('j','k','l')]
x = [tpl[1:] for tpl in x]

输出:

[('b', 'c'), ('e', 'f'), ('h', 'i'), ('k', 'l')]

正如您所发现的,元组是不可变的,因此您必须创建一个包含不包含

项的元组的新列表
new_list = []
for i in result:
new_list.append(i[1:])

或将列表项替换为它们的索引

for idx, tup in enumerate(x):
x[idx] = tup[1:]

或作为列表推导式

[i[1:] for i in result]
x = [('a','b','c'), ('d','e','f'), ('g','h','i'), ('j','k','l')]
y = []
for t in x:
y.append(tuple(list(t)[1:]))

print(y)

输出
[('b', 'c'), ('e', 'f'), ('h', 'i'), ('k', 'l')]