【问题标题】:Filtering a python list, while coupling non-filtered terms to other lists.过滤 python 列表,同时将未过滤的术语耦合到其他列表。
【发布时间】:2015-11-17 11:09:59
【问题描述】:

我正在尝试使用过滤器函数和 lambda 过滤掉包含术语“FX”的列表中的项目。这工作正常:

MarketnoFX=list(filter(lambda x: "FX" not in x, Openmarket))

但是,这个列表需要与其他两个包含数值的列表耦合,所以如果这个列表中省略了第 x 项(通过创建一个新列表),那么它也必须从其他 2 个列表中省略.我通常会简单地使用列表推导。

Openmarket=[someitems]
coupled1=[]
coupled2=[]

    for item in Openmarket:
        if "FX" in item:
            pass
        else:
            someotherlist.append(item)
            k=Openmarket.index(entry)
            someotherotherlist.append(coupled1[k])

但是,这样做不会产生正确的结果,并且在打印包含“FX”的项目的索引时,我得到例如它显示它两次找到第 12 和第 33 项,而第 71 项只找到一次.

过滤器功能似乎是一种更优雅的处理方式,但我如何将它与其他列表结合起来呢?我已阅读有关 zip 功能的信息,但我不确定如何在此处应用它。我不是一个非常有经验的 Python 程序员。

谢谢。

【问题讨论】:

    标签: python list filter lambda


    【解决方案1】:

    你是对的,使用zip() 是解决这个问题的好方法。

    基本上,它可以获取三个列表并同时遍历每个第 n 个元素,所以这在这里非常有用。

    当它返回一个元组列表时,您可以过滤它以保留第一个值(来自Openmarket 的元素)不包含FX 的元组。来自someotherlistsomeotherotherlist 的元素同时被过滤。

    最后,由于解包,您可以通过“解压缩”元组列表来取回初始列表。

    Python 2

    zipped = zip(Openmarket, someotherlist, someotherotherlist)
    filtered = filter(lambda (a, b, c): "FX" not in a, zipped)
    Openmarket, someotherlist, someotherotherlist = zip(*filtered)
    

    Python 3

    zipped = list(zip(Openmarket, someotherlist, someotherotherlist))
    filtered = list(filter(lambda elems: "FX" not in elems[0], zipped))
    Openmarket, someotherlist, someotherotherlist = zip(*filtered)
    

    【讨论】:

    • 我使用的是 Python 3.5(我应该在问题中说明这一点),所以我认为你的代码中的第一行需要是: zipped=list((zip(Opendeal, Openresult , 公开市场)))
    • @Hanadulset 你说得对。这是因为zip() 从 Python 3 开始返回一个 zip 对象,而之前它是一个简单的列表。
    • 我实际上是打算进一步扩展,但按 Enter 会发表评论,令我沮丧。我打算写:我正在使用 Python 3.5(我应该在问题中说明这一点),所以我认为你的代码中的第一行需要是: zipped=list((zip(Opendeal, Openresult, Openmarket) )) 所以我尝试了: zipped=list((zip(Opendeal, Openresult, Openmarket))) zipped=(filter(lambda a,b,c: "FX" not in c, *zipped)) 产生: TypeError: filter预期 2 个参数,得到 200 顺便说一句,您的代码的第三行是什么,以及: zip(*zipped) 做什么?
    • @Hanadulset 我添加了 Python 3 的代码,我希望它能像你预期的那样工作。
    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 2021-04-05
    • 2013-03-05
    • 2015-01-24
    • 1970-01-01
    • 2013-08-02
    相关资源
    最近更新 更多