Python - 返回值是否存在"精确"匹配?

2024-09-26 22:09:42 发布

您现在位置:Python中文网/ 问答频道 /正文

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)

在上面的代码中,结果是:

^{pr2}$

我希望结果是:

'a'

使用any()获得正确结果的正确方法是什么?在


Tags: keyinforlenifdefanyitem
3条回答

你不需要做所有的索引。在

def findexact(lst):
    key = ['a','g','t']
    for item in (set(key) & set(lst)):
        return item

根据我对你问题的解释,你想找出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,在返回第一个匹配项的列表上迭代,该列表将保持以下顺序:

def findexact(lst):
    key = {'a','g','t'}
    for ele in lst:
        if ele in key:
            return ele
    return False

如果要获取所有匹配项并查看不匹配项,只需将键设为集合并使用循环:

^{pr2}$

如果要根据是否存在任何公共元素返回bool,请使用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

相关问题 更多 >

    热门问题