我正在尝试制作一个称为valide(seq)的函数,为了使该字符串有效,该字符串应仅包含字母a
t
g
c
。
例如:attgcattgggacf-> true
例2:atgjglkdatfklja->否
如果有效,则应返回true,否则应返回false
每次我运行完整代码时,我都会输入仅包含这些字母且不接受的字符串
def valide(seq) :
sub = ["a", "t", "g", "c"]
if any(seq in s for s in sub):
return True
else:
return False
您应该使用all()
:
def valide(seq):
sub = ["a", "t", "g", "c"]
if all(letter in sub for letter in seq):
return True
else:
return False
all()
返回True
其检查的每个条目是否为真。之所以如此,是因为正如Hacked所说,字符串是可迭代的。因此,如果有任何错误,您将得到False
。
您可以将其压缩:
def valide(seq):
sub = ["a", "t", "g", "c"]
return all(letter in sub for letter in seq)
因为无论如何您都返回一个True
/False
值。
["a", "t", "g", "c"]
为"atgc"
,因为字符串是可迭代的。all()
函数中直接使用它,从而节省一行。这些更改如下所示:
valide = lambda seq : all(letter in "atgc" for letter in seq)
此结果简洁明了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句