【问题标题】:List comprehension to evaluate to true if list contains a value [duplicate]如果列表包含值,则列表推导评估为真[重复]
【发布时间】:2021-09-01 00:43:33
【问题描述】:

我有一个很长的值列表,并且希望列表推导式计算结果为 True(如果列表中的任何值是整数 1,则仅打印一次“True”)。

我可以为每个找到 1 的实例打印“True”,但看不到如何让它返回一个 True。

代码

a = [0,0,1,1,0,1]

b = [print("True") for i in a if i == 1]
print('\n')
#c = [print("True") if any i in a is True] # doesn't work, syntax error



d = [print("TRUE") if any(i == 1)]

【问题讨论】:

  • 顺便说一句,您几乎永远不想在列表理解中包含print()
  • 好的,这是为什么呢?
  • 打印返回无。所以没有必要将其输出存储在列表中。
  • 因为列表理解是将一个列表转换为另一个列表的一种方式。不涉及打印。
  • 你为什么需要理解? print(1 in a)?

标签: python list list-comprehension


【解决方案1】:

您的意思是将结果列表转换为bool()

a = [0,0,1,1,0,1]
b = bool([i for i in a if i == 1])
print(b)

【讨论】:

  • 这就是我的意思 quamrana,我将重写问题以反映这一点,以防它对其他人有所帮助。非常感谢。
【解决方案2】:

如果您的列表只包含零和一,您可以只使用print(any(a)) 否则你可以这样做

a = [0,0,1,0,2,0]
b =[x==1 for x in a]
print(any(b))

返回True

【讨论】:

    猜你喜欢
    • 2016-12-22
    • 1970-01-01
    • 2018-04-29
    • 2018-08-18
    • 1970-01-01
    • 2014-05-03
    • 2017-02-19
    • 2018-02-24
    • 1970-01-01
    相关资源
    最近更新 更多