繁体   English   中英

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

[英]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.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')]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM