【问题标题】:Unresolved reference when using list conprehension?使用列表理解时未解决的参考?
【发布时间】:2020-04-05 11:31:18
【问题描述】:

我正在尝试通过使用列表理解来消除重复项,但我不断得到未解决的参考 s

代码:

l = [[1,4,2],[5,1,4],[2,3,4,5]]
{n for n in s for s in l }

【问题讨论】:

  • 应该是{n for s in l for n in s}

标签: python python-3.x list set


【解决方案1】:

你可以使用itertools.chian.from_iterable:

from itertools import chain

l = [[1,4,2],[5,1,4],[2,3,4,5]]

set(chain.from_iterable(l))

输出:

{1, 2, 3, 4, 5}

【讨论】:

  • 这里是timeit分析:In [45]: timeit set(chain.from_iterable(l)) 591 ns ± 32 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)...In [47]: timeit {n for s in l for n in s} 653 ns ± 33.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
  • 这个解决方案比集合理解更快(忽略导入开销)
【解决方案2】:
{n  for s in l  for n in s}

>> {1, 2, 3, 4, 5}

您使用了错误的 for 循环顺序。

【讨论】:

    【解决方案3】:

    符号是{item for inner in outer for item in inner}

    在你的情况下{n for s in l for n in s}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 2021-08-17
      • 2016-12-14
      • 2020-05-27
      相关资源
      最近更新 更多