【问题标题】:How to get a list as an output from any() Function?如何从任何()函数获取列表作为输出?
【发布时间】:2019-08-23 16:11:58
【问题描述】:

我想获得一个输出列表,用于将嵌套列表与另一个列表进行比较。嵌套列表是 l1,我从中获取单个元素,例如 [1,0] 并将其与 l2 进行比较,如果其中任何一个元素中的值在 l2 中它应该返回 True 因此任何函数,但我无法存储任何 l1 的所有元素的结果分配给变量导致仅存储最后一个值。我需要存储一个列表每个元素的真假值和 l2 比较。

我尝试转换为列表、元组等,但似乎没有任何效果 a=list(any(map(lambda x: x in l2,i))) 或 a=tuple(any(map(lambda x: x in l2,i))) 我不断收到相同的错误 TypeError:bool object not iterable

l1=[[1,0],[2,0],[6,9],[7,1],[5,5]]
l2=[1,2,3,4,0]
x=[]
for i in l1:
 a=any(map(lambda x: x in l2,i))
print(a)

我希望变量 a 存储嵌套列表项和集合 l2 上比较的连续布尔结果 但是当我打印数据时,即 print(any(map(lambda x: x in l2,i))) 它为每个比较提供了正确的结果,即: 真的 真的 错误的 真的 假的

我希望变量 a 存储所有这些值的列表,而不仅仅是通过赋值获得的 False 的最后一个值 a=any(map(lambda x: x in l2,i)) 我想根据为 True 的案例数增加一个变量。

【问题讨论】:

  • 你想要一个列表理解,而不是anyall

标签: python boolean any


【解决方案1】:

您可以使用列表推导来完成此操作

[any(a in l2 for a in i) for i in l1]
[True, True, False, True, False]

anyall 为提供的可迭代返回单个布尔值,bool 不支持迭代,因此无法传递给 list 函数。

list(True)
TypeError: 'bool' object is not iterable

【讨论】:

    【解决方案2】:
    result = []
    l1= [[1,2,3],[3,4]]
    l2 = [3,4,5]
    
    for ele in l1:
        boolCheck = False
        for e in ele:
            if e in l2:
               boolCheck = True
        result.append(boolCheck)
    return result
    

    【讨论】:

      猜你喜欢
      • 2019-04-09
      • 1970-01-01
      • 2022-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      相关资源
      最近更新 更多