[英]How to remove the first element from a list of tuples?
我有一个像这样的元组列表:
x = [("a","b","c"), ("d","e","f"), ("g","h","i"), ("j","k","l")]
我想从每个索引中删除第一个元素,如下所示:
x = [("b","c"), ("e","f"), ("h","i"), ("k","l")]
我已经尝试过使用pop.x
和remove.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')]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.