我试图找到一个简短的方法来查看列表中是否有以下任何项目,但我的第一次尝试不起作用.除了编写一个完成此功能的函数之外,还有一种简短的方法可以检查列表中是否存在多个项目之一.
>>> a = [2,3,4]
>>> print (1 or 2) in a
False
>>> print (2 or 1) in a
True
Run Code Online (Sandbox Code Playgroud) 我有一个列表A和列表B,我想从这两个列表中获取公共元素,但希望当我获取公共元素时,它们应该保持 List 的顺序A。
首先,我开始将它们转换为集合并取交叉点,但这存在维护顺序的问题。
common = list(set(A).intersection(set(B)))
Run Code Online (Sandbox Code Playgroud)
所以我决定做列表理解:
common = [i for i in A if i in B]
Run Code Online (Sandbox Code Playgroud)
我正进入(状态
IndexError: too many indices for array
Run Code Online (Sandbox Code Playgroud) 我有一个列表,我想用它来查看列表中的任何成员是否在第二个列表中,并在 Ansiblewhen子句中使用它。这可以在单线中完成吗?
- name: task include moar ansible
include: more_tasks.yaml
when: any_member_of_this_list in some_other_list
Run Code Online (Sandbox Code Playgroud) 我有一个名为"UserDatabaseRecord"的类.它有一堆字段,如"username","expiration_date"等.
我有两个UserDatabaseRecord对象列表:列表A和列表B.
我想验证对于列表A中的所有UserDatabaseRecords,用户名字段与列表B中的任何UserDatabaseRecords用户名字段都不匹配.
我能够非常低效地完成这个任务:
for record_a in List_A:
for record_b in List_B:
if record_a.username == record_b.username:
print "Duplicate username: {0}".format(record_a.username)
Run Code Online (Sandbox Code Playgroud)
我觉得它很有用.我只想让它更高效和/或"Pythonic".
这个问题是相关的,但最终我无法弄清楚如何只在一个字段上进行比较时如何将它应用于对象列表:单行检查是否列表中至少有一个项目存在于另一个列表中?
检查 Python 中的两个集合是否至少有一个公共元素的最快方法是什么?所需的输出是 True/False。
例如,我尝试使用 set.intersection(),但我想避免检查两个集合中的所有元素。
set.intersection({1,2,3}, {8,9,2})
>>> {2}
Run Code Online (Sandbox Code Playgroud)
注意:我正在寻找一个与Python集一起使用的非常有效的解决方案(我不是在问列表)