代码之家  ›  专栏  ›  技术社区  ›  user366312

如何用Python过滤列表?

  •  1
  • user366312  · 技术社区  · 4 年前

    假设,我有一个清单 rx xs 只包含列表中的偶数 .

    我该怎么做?

    以下代码没有给出正确答案:

    rx = [1, 2, 3, 4, 5, 6]
    
    xs = [rx[x%2==0] for x in rx] # <==========
    
    print(xs)
    

    输出

    [1, 2, 1, 2, 1, 2]
    

    另一个问题是:这种类型的符号在Python中是什么?是lambda表达式吗?

    2 回复  |  直到 4 年前
        1
  •  1
  •   Nick    4 年前

    我想你在找一个 list comprehension

    rx = [1, 2, 3, 4, 5, 6]
    xs = [x for x in rx if x % 2 == 0]
    # [2, 4, 6]
    
        2
  •  1
  •   Z4-tier    4 年前

    这将使具有偶数索引位置的项:

    xs = [rx[n] for n in range(1, len(rx), 2)]
    

    这将使这些项目本身更加均衡:

    xs = [x for x in rx if x%2==0]
    

    在这两种情况下,这些都被称为列表理解。

    [rx[x%2==0] for x in rx]
    

    只是在列表的前两项之间摇摆 rx ,因为 True False 在python中:

    >>> rx[True]
    2
    >>> rx[False]
    1