【问题标题】:Comparing two lists of strings and return boolean values [duplicate]比较两个字符串列表并返回布尔值
【发布时间】:2019-12-20 10:23:46
【问题描述】:

我正在尝试比较两个字符串列表并返回布尔值。但它总是只返回 True 或 False。

stringList = ["252.007", "546.658", "252.108"]

paramValue = ["252.017", "546.658", "252.008"]

def compareList():
    return [x != stringList for x in paramValue]
   #return [x == stringList for x in paramValue]

输出应该是一个包含以下内容的列表:

[False, True, False]

我无法弄清楚,我不明白,为什么如果我使用 != 会返回 [True, True, True] 并且如果我使用 == 会返回 [False, False, False] ,任何人都可以给我解释一下?

TIA

【问题讨论】:

  • 你将字符串与整个列表进行比较,字符串永远不等于列表
  • 在某种程度上确实如此。非常感谢您的帮助。

标签: python python-3.x


【解决方案1】:

您可以使用zip() 组合两个列表的元素并在列表理解中比较它们。

stringList = ["252.007", "546.658", "252.108"]
paramValue = ["252.017", "546.658", "252.008"]

def compareList(l1, l2):
    return [i==j for i, j in zip(l1, l2)]

print(compareList(stringList, paramValue))  # -> [False, True, False]

【讨论】:

  • 请补充一点解释。
  • @Netwave 不要费心打磨这个,找一个副本,然后投票关闭
【解决方案2】:

你想要这样的东西

def comp():
       return [stringList[i]==paramValue[i] for i in range(len(paramValue))]

【讨论】:

    【解决方案3】:

    使用numpy

    import numpy as np
    
    stringList = np.array(["252.007", "546.658", "252.108"])
    
    paramValue = np.array(["252.017", "546.658", "252.008"])
    
    res=stringList==paramValue
    

    输出:

    [False  True False]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多