3

我是 python 新手,我想知道如何从列表中删除项目。说我有清单:

a=[(102,12,0),(123,12,0),(124,12,1)]

我想删除末尾有 0 的项目,所以我的列表最终会像:

a = [(124,12,1)]
4

3 回答 3

6

这里:

a = [i for i in a if i[-1] != 0] #list comprehension (1 line) method.

当父列表也是目标列表时,没有列表理解的“正常”方式。

tmp = []
for i in a:
    if i[-1] != 0:
        tmp.append(i)
a = tmp

在行动:

>>> a=[(102,12,0),(123,12,0),(124,12,1)]
>>> a = [i for i in a if i[-1] != 0]
>>> a
[(124, 12, 1)]
>>> 
于 2012-12-27T13:55:22.007 回答
2

您可以使用列表推导

val[-1]最后会给你 0 的元组,假设val是迭代时使用的变量。

因此,您的代码将是这样的:

a = [val for val in a if val[-1]]
于 2012-12-27T13:59:27.130 回答
1

不像单行列表理解那么棒,但仍然可以做到这一点:)。

b = tuple
for tple in a:
    b = b + tple
result = tuple
for val in set(b):
    if val % 10 != 0:
        result = result + (val,)
于 2012-12-28T08:23:11.640 回答