根据条件从列表中删除项

2024-04-26 14:42:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个整数元组列表。你知道吗

ls = [[(a_1, a_2), (b_1, b_2)], [(c_1, c_2), (d_1, d_2), (e_1, e_2)], ...]

我需要删除ls的每一项,其中包含一个元组,其第二个条目等于一个预定的整数。你知道吗

我试过这个:

  for item in ls:
    for tpl in item:
      if tpl[1] == m:
        ls.remove(item)

但出于某种原因,这只删除了少数列表项,而不是全部包含第二个entry=m的元组


Tags: in列表forif条目整数itemls
3条回答

使用列表理解:

ls = [item for item in ls if all(tuple[1] != m for tuple in item)]

或使用过滤器:

ls = filter(lambda item: all(tuple[1] != m for tuple in item),ls)

在python中过滤列表的最佳方法是使用列表理解:

filtered = [item for item in ls if not(contains_m(item))]

然后你所需要的就是一个函数,它可以判断一个项目是否包含m,例如:

def contains_m(item):
     return any([tpl[1] == m for tpl in item])

代码糟透了,我们需要更少的代码-这里是稀疏的,因为它得到。你知道吗

[l for l in ls if m not in [i[1] for i in l]]

相关问题 更多 >