Python-如果有一个";确切的;火柴
我希望结果是:Python-如果有一个";确切的;火柴,python,string,find,any,Python,String,Find,Any,我希望结果是: 'a' 'aa' 使用any()获得正确结果的正确方法是什么?根据我对您问题的解释,您似乎想找到键中的哪个项目在lst中。这将是实现这一目标的方法: 'a' 根据我对您问题的解释,您似乎想找到键中的哪个项目在lst中。这将是实现这一目标的方法: 'a' 你不需要做所有的索引 def findexact(lst): key = ['a','g','t'] for k in key: if k in lst: print
'a'
'aa'
使用
any()
获得正确结果的正确方法是什么?根据我对您问题的解释,您似乎想找到键中的哪个项目在lst
中。这将是实现这一目标的方法:
'a'
根据我对您问题的解释,您似乎想找到键
中的哪个项目在lst
中。这将是实现这一目标的方法:
'a'
你不需要做所有的索引
def findexact(lst):
key = ['a','g','t']
for k in key:
if k in lst:
print k
return k
你不需要做所有的索引
def findexact(lst):
key = ['a','g','t']
for k in key:
if k in lst:
print k
return k
这应该做你想做的
这应该可以完成您正在尝试的工作。最简单的方法是使用Python的内置集合交集:
lst = ['a', 'b', 'c', 'aa', 'bb', 'cc']
def findexact(lst):
i=0
key = ['a','g','t']
for eachItm in lst:
if eachItm in key:
print eachItm
findexact(lst)
输出
lst = ['a', 'b', 'c', 'aa', 'bb', 'cc']
key = ['a','g','t']
for item in set(lst).intersection(key):
print item
如果至少存在一个精确匹配,则返回True
的函数:
def findexact(lst):
key = ['a','g','t']
return set(lst).intersect(key)
最简单的方法是使用Python的内置集合交集:
lst = ['a', 'b', 'c', 'aa', 'bb', 'cc']
def findexact(lst):
i=0
key = ['a','g','t']
for eachItm in lst:
if eachItm in key:
print eachItm
findexact(lst)
输出
lst = ['a', 'b', 'c', 'aa', 'bb', 'cc']
key = ['a','g','t']
for item in set(lst).intersection(key):
print item
如果至少存在一个精确匹配,则返回True
的函数:
def findexact(lst):
key = ['a','g','t']
return set(lst).intersect(key)
这:
在列表中每个元素的内部查找键的每个元素。并在“a”和“aa”中查找“a”。在lst的任何元素中都找不到“g”或“t”。这是:
在列表中每个元素的内部查找键的每个元素。并在“a”和“aa”中查找“a”。它在lst的任何元素中都找不到“g”或“t”。为了匹配您的预期输出,您不能使用集合。由于集合是无序的,所以如果您将a
作为第一个项目,这完全是偶然的,您应该制作键集合并在中使用,在返回第一个匹配项的列表上迭代,这将保持顺序:
item in lst[i] for item in key
如果要获取所有匹配项并查看非匹配项,只需将密钥设置为一个集合并使用循环:
def findexact(lst):
key = {'a','g','t'}
for ele in lst:
if ele in key:
return ele
return False
如果要根据是否存在任何公共元素返回布尔值,请使用set.isdisjoint
:
def findexact(lst):
key = {'a','g','t'}
for ele in lst:
if ele in key:
print(ele)
else:
# do whatever
如果至少有一个匹配项,函数将返回True,如果没有,则集合不相交,因此将返回False
如果需要索引,请使用枚举:
def findexact(lst):
key = {'a','g','t'}
return not key.isdisjoint(lst)
如果我们有一个匹配项,那么它将返回元素和索引,如果您只是想让索引返回ind
,对于不匹配项,我们只返回False,以匹配您的预期输出,您不能使用set。因为集合是无序的,所以如果您将a
作为第一项,这完全是偶然的,您应该设置键
并在
中使用,在返回第一个匹配项的列表上迭代,以保持顺序:
item in lst[i] for item in key
如果要获取所有匹配项并查看非匹配项,只需将密钥设置为一个集合并使用循环:
def findexact(lst):
key = {'a','g','t'}
for ele in lst:
if ele in key:
return ele
return False
如果要根据是否存在任何公共元素返回布尔值,请使用set.isdisjoint
:
def findexact(lst):
key = {'a','g','t'}
for ele in lst:
if ele in key:
print(ele)
else:
# do whatever
如果至少有一个匹配项,函数将返回True,如果没有,则集合不相交,因此将返回False
如果需要索引,请使用枚举:
def findexact(lst):
key = {'a','g','t'}
return not key.isdisjoint(lst)
如果我们有匹配项,那么它将同时返回元素和索引,如果您只想让索引返回ind
,对于不匹配项,我们只返回False您想做什么?打印'a'
和“返回True”不是一回事。你想要哪一个?哦。很抱歉我正在写这篇文章,然后我把代码改为打印“a”。我忘了更改标题。你想做什么?打印'a'
和“返回True”不是一回事。你想要哪一个?哦。很抱歉我正在写这篇文章,然后我把代码改为打印“a”。我忘了换书名了,比我快;我想说的是,除非函数的目的是打印,或者您正在调试,否则您不应该在函数中打印。有没有一种方法可以在if语句中使用“for item in(set(key)&set(lst))?如果有匹配项,请做一些事情。当然-保存它,然后检查它myset=(set(key)&set(lst))
,如果myset:…
。你不必调用set两次,set(key).交叉点(lst)
,你为什么循环然后返回?啊,好的。这太完美了。谢谢打败我吧;我想说的是,除非函数的目的是打印,或者您正在调试,否则您不应该在函数中打印。有没有一种方法可以在if语句中使用“for item in(set(key)&set(lst))?如果有匹配项,请做一些事情。当然-保存它,然后检查它myset=(set(key)&set(lst))
,如果myset:…
。你不必调用set两次,set(key).交叉点(lst)
,你为什么循环然后返回?啊,好的。这太完美了。谢谢有没有办法将set().intersect()与if语句一起使用?例如,如果存在匹配项,则执行某项操作?是的,只需执行:如果设置(lst).intersect(key):打印“精确匹配!”代码>是否有方法将set().intersect()与if语句一起使用?例如,如果存在匹配项,则执行某项操作?是的,只需执行:如果设置(lst).intersect(key):打印“精确匹配!”代码>有没有办法获得精确匹配的索引?如果在“lst”@niamleeson中只有一个匹配项,enumerate将为您提供索引,您是否有办法获得精确匹配的索引?如果“lst”@niamleeson中只有一个匹配项,enumerate将为您提供索引