2024-09-26 22:09:42 发布
网友
lst = ['a', 'b', 'c', 'aa', 'bb', 'cc'] def findexact(lst): i=0 key = ['a','g','t'] while i < len(lst): if any(item in lst[i] for item in key): print lst[i] i+=1 findexact(lst)
在上面的代码中,结果是:
我希望结果是:
'a'
使用any()获得正确结果的正确方法是什么?在
any()
你不需要做所有的索引。在
def findexact(lst): key = ['a','g','t'] for item in (set(key) & set(lst)): return item
根据我对你问题的解释,你想找出key中的哪一项在lst中。这样做的方法是:
key
lst
def findexact(lst): key = ['a','g','t'] for k in key: if k in lst: print k return k
为了匹配您的预期输出,您不能使用set.intersection,因为集合是无序的,所以如果您将a作为第一项,这完全是偶然的,您应该使key成为一个集,并使用in,在返回第一个匹配项的列表上迭代,该列表将保持以下顺序:
set.intersection
a
in
def findexact(lst): key = {'a','g','t'} for ele in lst: if ele in key: return ele return False
如果要获取所有匹配项并查看不匹配项,只需将键设为集合并使用循环:
如果要根据是否存在任何公共元素返回bool,请使用set.isdisjoint:
set.isdisjoint
def findexact(lst): key = {'a','g','t'} return not key.isdisjoint(lst)
如果至少有一个匹配,函数将返回True;如果不匹配,则集合不相交,因此返回False。在
如果要索引,请使用枚举:
def findexact(lst): key = {'a','g','t'} for ind,ele in enumerate(lst): if ele in key: return ind, ele return False
如果有匹配项,则返回元素和索引;如果只希望索引返回ind,如果不匹配,则返回False
ind
你不需要做所有的索引。在
根据我对你问题的解释,你想找出
key
中的哪一项在lst
中。这样做的方法是:为了匹配您的预期输出,您不能使用
set.intersection
,因为集合是无序的,所以如果您将a
作为第一项,这完全是偶然的,您应该使key
成为一个集,并使用in
,在返回第一个匹配项的列表上迭代,该列表将保持以下顺序:如果要获取所有匹配项并查看不匹配项,只需将键设为集合并使用循环:
^{pr2}$如果要根据是否存在任何公共元素返回bool,请使用
set.isdisjoint
:如果至少有一个匹配,函数将返回True;如果不匹配,则集合不相交,因此返回False。在
如果要索引,请使用枚举:
如果有匹配项,则返回元素和索引;如果只希望索引返回
ind
,如果不匹配,则返回False相关问题 更多 >
编程相关推荐