我不久前自学了python,我发现自己不断地做这个逻辑......
如果listB中listA的任何元素然后等等等等......
我将其编码为:
for i in listA:
if i in listB:
do something
鉴于我遇到这种情况的频率,我认为必须有一种更有效的编码方式吗?
提前致谢。
答案 0 :(得分:4)
是的,any()
功能:)。
if any(i in listB for i in listA):
do something
这假设你想要{/ 1}} 一次。如果你想用"do something"
实际做某事(如果它在i
中),那么就像你一样使用for循环。
listB
。几乎相当于:
any(i in listB for i in listA)
答案 1 :(得分:2)
目前还不清楚你是否需要为listA中的每个元素做一次或一次。
所以,如果你需要做一次,在一个集合中转换它们,看看交集是否大于0:
if (set(listA)).intersection(set(listB)):
do something
如果您需要为每个元素执行某些操作,请跳过重复的值:
intersection = (set(listA)).intersection(set(listB))
for el in intersection:
do something
并且,如果你需要为每个元素做一些事情,无论它是否重复:
for element in listA:
if element in listB:
do something
答案 2 :(得分:0)
尝试:
for i in list(set(listA).intersection(listB)):
#do something
pass