【问题标题】:Match logic between two lists [duplicate]两个列表之间的匹配逻辑[重复]
【发布时间】:2015-09-11 02:14:20
【问题描述】:

我有两个列表,正在尝试查找 lista 中的任何元素是否存在于列表中,我知道我可以使用两个 forloop 进行匹配 ,有没有更好的方法来实现这一点而无需两个 for 循环

lista=['LA.BF.2.1']
listb=['LA.BF.2.1','LA.BF64.1.2.1','LA.BF64.1.1']
for element in lista:
    for element in listb:
                  match

【问题讨论】:

  • @kasra - 抱歉,我不需要交集逻辑……它是匹配逻辑……更新问题
  • 仍然试图找到 lista 中的任何元素都存在于列表中, 表示交集

标签: python


【解决方案1】:

也许使用any

>>> lista=['LA.BF.2.1']
>>> listb=['LA.BF.2.1','LA.BF64.1.2.1','LA.BF64.1.1']
>>> any([ i in listb for i in lista])
True

【讨论】:

  • @nullp - 我需要知道 lista 中的每个 i 是否匹配,该怎么做?
  • 对于数据 lista=['LA.BF.2.1','LA.BF.2.2'] listb=['LA.BF.2.1','LA.BF64.1.2.1','LA.BF64.1.1'] ,我得到的输出为 False,与 LA.BF.2.1 匹配
  • @PythonProg 我想你正在寻找any 然后,更新我的答案
【解决方案2】:

如果您的目标是在 lista 中找到也存在于 listb 中的任何元素,您可以将列表转换为 set,然后执行 set.intersection

示例 -

>>> lista=['LA.BF.2.1','SOMETHINGELSE']
>>> listb=['LA.BF.2.1','LA.BF64.1.2.1','LA.BF64.1.1']
>>>
>>> list(set(lista).intersection(listb))
['LA.BF.2.1']

【讨论】:

  • 我想看看listb中lista的每个元素是否匹配,无论哪种情况我都需要一个true或false的响应,基本上是否匹配..跨度>
  • 你能定义匹配吗?
  • 你的意思是如果lista中的任何一个元素都在listb中,则返回true,否则如果lista中的所有元素都不在listb中,则返回false?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 2019-11-21
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多