1

假设我有一个清单:

[(12,34,1),(123,34,1),(21,23,1)]

我想1从列表中的每个元组中删除它,使其变为

[(12,34),(123,34),(21,23)]
4

5 回答 5

3

你想截断你的元组,使用列表理解:

[t[:-1] for t in listoftuples]

或者,作为一个简单的演示:

>>> listoftuples = [(12,34,1),(123,34,1),(21,23,1)]
>>> [t[:-1] for t in listoftuples]
[(12, 34), (123, 34), (21, 23)]
于 2012-12-28T14:06:16.203 回答
2

元组是不可变的,因此您不能删除项目。但是,您可以从旧元组创建一个新元组,不包括您不想要的元素。因此,要从元组列表中的每个元组中删除任意项,您可以执行以下操作:

def deleteItem(lst, toDel):
    return [tuple(x for x in y if x != toDel) for y in lst]

结果:

>>> lst = [(12,34,1),(123,34,1),(21,23,1)]
>>> deleteItem(lst, 1)
[(12, 34), (123, 34), (21, 23)]
于 2012-12-28T14:10:08.473 回答
1
>>> a=[(12, 34, 1), (123, 34, 1), (21, 23, 1)]
>>> [filter (lambda a: a != 1, x) for x in a]
[(12, 34), (123, 34), (21, 23)]

无论索引如何,这都会从元组中删除所有 1

于 2012-12-28T14:30:39.840 回答
0

由于您不能更改元组(因为它们是不可变的),我建议使用列表列表:

my_list = [[12,34,1],[123,34,1],[21,23,1]]
for i in my_list:
    i.remove(1)
return my_list

这返回:[[12, 34], [123, 34], [21, 21]]

于 2012-12-28T14:21:51.680 回答
0
     python 3.2

    1. [(i,v)for i,v,c in list1]

    2. list(map(lambda x:x[:2],list1))
于 2012-12-28T17:01:11.587 回答