Python 检查是否至少有一个列表包含特定元素

Python 检查是否至少有一个列表包含特定元素,python,list,Python,List,谁能告诉我写这个逻辑的最短方法是什么 我有两个列表,分别是包含一些字母的list\u one和list\u two。如果这两个列表都不包含“B”,我需要打印(True)。我写的代码片段很有用,但我很好奇,是否有一种类似蟒蛇的方式来写它,而不是在同一行中重复两次“B” list_one = ['A', 'K', 'L', 'J'] list_two = ['N', 'M', 'P', 'O'] if 'B' not in list_one and 'B' not

谁能告诉我写这个逻辑的最短方法是什么

我有两个列表,分别是包含一些字母的
list\u one
list\u two
。如果这两个列表都不包含“B”,我需要打印(True)。我写的代码片段很有用,但我很好奇,是否有一种类似蟒蛇的方式来写它,而不是在同一行中重复两次“B”

    list_one = ['A', 'K', 'L', 'J']
    list_two = ['N', 'M', 'P', 'O']
    
    if 'B' not in list_one and 'B' not in list_two:
        print('True')
提前感谢您,我们将非常感谢您的帮助。

好吧,您可以这样做(尽管我认为您的方式是最好的):

或:

嗯,你可以这样做(尽管我认为你的方式是最好的):

或:


如果
all
功能更具可读性,您可以尝试该功能

list_one = ['A', 'K', 'L', 'J']
list_two = ['N', 'M', 'P', 'O']

print(all('B' not in current_list for current_list in [list_one, list_two]))

如果
all
功能更具可读性,您可以尝试该功能

list_one = ['A', 'K', 'L', 'J']
list_two = ['N', 'M', 'P', 'O']

print(all('B' not in current_list for current_list in [list_one, list_two]))

Python中有
集合
,与列表相比,它们的速度非常快

下面是有关集合的一些特性

  • 集合是无序的
  • 集合元素是唯一的
  • 集合中不允许重复元素
因此,您可以在公共集合中搜索该项

list_one = ['A', 'K', 'L', 'J']
list_two = ['N', 'M', 'P', 'O']

if 'B' not in set(list_one + list_two)
    print('True')
奖金: 您可以使用
extend
方法来加速列表连接

set( list_one.extend( list_two ))

Python中有
集合
,与列表相比,它们的速度非常快

下面是有关集合的一些特性

  • 集合是无序的
  • 集合元素是唯一的
  • 集合中不允许重复元素
因此,您可以在公共集合中搜索该项

list_one = ['A', 'K', 'L', 'J']
list_two = ['N', 'M', 'P', 'O']

if 'B' not in set(list_one + list_two)
    print('True')
奖金: 您可以使用
extend
方法来加速列表连接

set( list_one.extend( list_two ))

另一种方法是首先将所有列表放在数据帧中:

import pandas as pd
df = pd.DataFrame(list(zip(list_one, list_two)), columns =['l1', 'l2']) 
然后,您可以通过返回True来轻松检查字符B是否不存在。双
.any()
用于检查行和列:

~df.isin(['B']).any().any()

另一种方法是首先将所有列表放在数据帧中:

import pandas as pd
df = pd.DataFrame(list(zip(list_one, list_two)), columns =['l1', 'l2']) 
然后,您可以通过返回True来轻松检查字符B是否不存在。双
.any()
用于检查行和列:

~df.isin(['B']).any().any()


这里有一个理解的解决方案,但对于2个列表来说,这可能是最容易阅读的,我会保留你所拥有的。其他解决方案包括在容器类型之间切换和复制。在你的情况下,这可能是可以接受的,但我认为你的代码不够糟糕,不足以保证开销。如果你对我的答案@nectarBee:)@Sekomer竖起大拇指,我将不胜感激。。事实上,我很高兴这样做,但老实说,我不知道如何做到这一点,因为我是一个非常初学者。我已经标记了你的解决方案是有用的,并且被接受。这里有一个理解的解决方案,但是对于2个列表,这可能是最容易阅读的,我会保留你所拥有的。其他解决方案包括在容器类型之间切换和复制。在你的情况下,这可能是可以接受的,但我认为你的代码不够糟糕,不足以保证开销。如果你对我的答案@nectarBee:)@Sekomer竖起大拇指,我将不胜感激。。事实上,我很高兴这样做,但老实说,我不知道如何做到这一点,因为我是一个非常初学者。我已经标记了你的解决方案是有用的并且被接受。列表连接是优雅的,非常感谢你的及时回复@SynthaseNo pb!考虑一下接受答案(答案左上角的灰色勾号将变为绿色)这对你有帮助吗!列表连接非常优雅,非常感谢您及时回复@SynthaseNo pb!考虑一下接受答案(答案左上角的灰色勾号将变为绿色)这对你有帮助吗!所有的方法看起来更像蟒蛇。感谢Albin Paul的及时回复。所有方法看起来更像python。感谢Albin Paul的及时回复。set union对我的申请非常有效。谢谢Sekomer的及时回复。我不认为应该使用这个,除非你已经有了电视机
set(list\u one+list\u two)
是对两个列表进行迭代以生成第三个副本,然后进行第二次迭代以将其放入一个集合中,只是为了避免在最坏的情况下需要对两个列表进行迭代的查找。您的建议是什么?set union对我的应用程序非常有效。谢谢Sekomer的及时回复。我不认为应该使用这个,除非你已经有了电视机
set(list\u one+list\u two)
是对两个列表进行迭代以生成第三个副本,然后进行第二次迭代以将其放入一个集合,只是为了避免在最坏的情况下需要对两个列表进行迭代的查找。您的建议是什么?我非常感谢您的支持。这确实是一个有用的解决方案。我真的很感谢你对鲁瑟的支持。这确实是一个有用的解决办法。