不久前我自学了python,我发现自己一直在做这个逻辑......
如果 listB 中 listA 的任何元素,那么等等等等……
我会将其编码为:
for i in listA:
if i in listB:
do something
鉴于我遇到这种情况的频率,我认为必须有一种更有效的编码方式?
提前致谢。
是的,any()
功能:)。
if any(i in listB for i in listA):
do something
这是假设你想做"do something"
一次。如果您想实际做某事i
(如果它在 中listB
),那么像您所做的那样使用 for 循环。
any(i in listB for i in listA)
. 几乎等同于:
for i in listA:
if i in listB:
return True
return False
目前尚不清楚您是否需要执行一次,或者为 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
尝试:
for i in list(set(listA).intersection(listB)):
#do something
pass