对多个列表重复操作

时间:2013-05-25 11:04:10

标签: python

让我们假设以下列表:

totest=[2,4,5,3,6]
l1=[6,8,7,9,4]
l2=[3,12,21,30]
l3=[2,5]

以下功能:

def evalitem(x):
...detail....

除非有异常,否则我必须针对序列中所有其他列表执行针对totest的交集的函数。
始终有以下选项:

test1=set(totest)&set(l1)
try:
  for i in test1:
  evalitem(i)
except:
    return
test2=.....

但是应该有一种更快的pythonic功能方式来实现这一点,性能要好得多 请注意,仅当test1没有引发异常时我们才会评估test2。

1 个答案:

答案 0 :(得分:1)

totest = set(totest)

for lst in l1, l2, l3:
    for item in totest.intersection(lst):
        evalitem(item)

如果您不知道如何处理异常(except: return不计算),则根本不需要使用try...except。在调用相关函数的代码中处理它。