【问题标题】:Find a unique element in a list [closed]在列表中查找唯一元素 [关闭]
【发布时间】:2016-01-12 19:34:25
【问题描述】:

我发现了很多关于 Python 列表的文档。但是我没有找到以下案例的答案:

我有一个这样的列表:[False, False, False, VARIABLE, False, False]

是否存在一种方法来获取 VARIABLE 值(是一个整数)而无需在每个元素上使用 for 循环并使用列表理解?一种“which”,为了表示:选择列表中的项目 WHICH 不为 False。

重要一点,VARIABLE 在列表中始终是唯一的。列表中不可能有两个 VARIABLE。

编辑

就我而言,@AChampion 给出的解决方案是最好的。谢谢你的提示。我必须获得 VARIABLE 的值,这正是我在您的解决方案中所拥有的。

【问题讨论】:

  • 列表推导是我能想到的最 Pythonic 的方式,为此。另外,如果VARIABLE__bool__ 计算结果为False 怎么办?
  • 列表推导也使用for 循环。
  • 列表推导!=总是最pythonic。事实上,一些列表推导根本不是 Python 的。
  • False 相当于 0 所以你可以sum(my_list)
  • 您要查找的函数名称是:filter。

标签: python list list-comprehension


【解决方案1】:

如果整数非零,您可以使用reduce(Python3 中为functools.reduce

>>> x = [False, False, False, 10, False, False]
>>> reduce(lambda i,j:i or j, x)
10

您也可以在这里使用生成器表达式

>>> x = [False, False, False, 10, False, False]
>>> (i for i in x if i!=False).next()
10

同时查看包裹first

>>> from first import first
>>> first([False, False, False, 10, False, False])
10

【讨论】:

  • reduce on [False, 0, False] 返回 False 而不是 0(reducefunctools 中用于 python3)
  • @AChampion 更正了声明。稍后将添加其他技术
猜你喜欢
  • 2010-11-16
  • 2015-08-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2015-02-17
  • 2019-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多