【问题标题】:python code with lambda and filter带有 lambda 和过滤器的 python 代码
【发布时间】:2016-08-26 22:00:55
【问题描述】:

谁能帮我理解下面这段python代码:

for i, char in filter(lambda x: x[1] in str1, enumerate(str2)):
    # do something here ...

str1 和 str2 是字符串,我有点理解“lambda x: x[1] in str1”是过滤条件,但是为什么 x[1] 呢?

如何将此 for 循环转换为较低级别(但更易于理解)的 Python 代码?

谢谢

【问题讨论】:

  • enumerate 返回一个包含索引和项的可迭代对象,因此 x 将是一个包含每个元素及其索引的元组,x[1] 是项(字符)本身。跨度>

标签: python lambda filter


【解决方案1】:

这看起来功能等同于:

for i, char in enumerate(str2):
    if char in str1:
        # do something here

filter 正在获取由str2 的索引和元素组成的元组列表,过滤掉那些未出现在str1 中的元素,然后从str2 返回剩余索引和元素的迭代.

【讨论】:

    【解决方案2】:

    因为enumerates

    枚举返回 (index, value) 的元组以获取可迭代的值。

    x 是索引字符的元组。

    为了清楚起见,我会写lambda (index, char): char in str1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 1970-01-01
      相关资源
      最近更新 更多