我想检查一个列表中的项是否等于给定n个元素集中的任何一个元素,如果是,做一些事情。
例如,最直观但当然繁琐和丑陋的方式是:
for item in List:
if (item == element1) or (item == element2) or ... or (item == elementn):
do something
有哪些更好的检查方法?
答案 0 :(得分:8)
您使用in
运算符:
elements = set((element1, element2, ..., elementn))
...
if item in elements:
do something
对元素使用集合或元组:对于查找,集合更快但要求元素可以清除。对于少数元素,元组的权重较轻,但如果元素数量较多,则元组会变慢。
此外,除非元素因循环而异,否则应该在循环外部初始化集合,以避免每次创建集合/元组的开销。
答案 1 :(得分:4)
for item in my_ist:
if item in (element1, element2, ..., elementn):
# do something
如果my_list
中的项目的顺序和频率无关紧要,您也可以使用
for item in set(my_list) & set((element1, element2, ..., elementn)):
# do something
答案 2 :(得分:1)
您只需使用要匹配的元素正确初始化list2即可if item in list2: do something
。