Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查字符串是否包含列表中的字母_Python - Fatal编程技术网

Python 检查字符串是否包含列表中的字母

Python 检查字符串是否包含列表中的字母,python,Python,我试图创建一个名为valide(seq)的函数,为了有效,字符串应该只包含字母atgc 例如:attgcattgggacf->true ex2:atgjglkdatfklja->false 如果有效,则应返回true;如果无效,则应返回false 每次我运行完整的代码,我输入一个字符串,其中只包含这些字母,它不接受它 def valide(seq) : sub = ["a", "t", "g", "c"]

我试图创建一个名为valide(seq)的函数,为了有效,字符串应该只包含字母
a
t
g
c

例如:attgcattgggacf->true

ex2:atgjglkdatfklja->false

如果有效,则应返回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()

all()。这是因为,正如哈克所说,字符串是可编辑的。因此,如果有任何错误,您将得到
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)

此结果简洁易读。

您应该使用
all()

all()。这是因为,正如哈克所说,字符串是可编辑的。因此,如果有任何错误,您将得到
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)
此结果简明易读。

def有效(seq):
sub=[“a”、“t”、“g”、“c”]
对于下文中的e:
如果e不在sub中:
返回错误
返回真值
检查每个字母是否不在列表中如果字母不在列表中,它将返回false,否则列表中的所有字母将运行full for循环,最后函数将返回true sub=[“a”、“t”、“g”、“c”] 对于下文中的e: 如果e不在sub中: 返回错误 返回真值

检查每个字母是否不在列表中如果字母不在列表中,它将返回false,否则列表中的所有字母将运行full for循环,finally函数将返回true

让我们以您的输入为例:
attgcattgggac
(我猜最后的f是一个打字错误)。您的代码所做的是分别查看每个字母,因此
a
,然后
t
,等等,并检查数组
[“a”、“t”、“g”、“c”]
是否包含在其中,这显然是错误的。它还只检查是否至少有一个这样做。您应该使用
all()
检查它们是否都是。您要做的是检查数组中是否存在该字母。这将使:

def valide(序列号): sub=[“a”、“t”、“g”、“c”] 如果所有(子项中的)表示所有(子项中的): 返回真值 其他: 返回错误
由于任何生成布尔值的字符串都是可编辑的,因此也可以通过以下方式对其进行压缩:

def valide(序列号): sub=“atgc” 返回所有子项中的项,用于返回序号中的项:
让我们以您的输入为例:
attgcattgggac
(我猜最后的f是一个打字错误)。您的代码所做的是分别查看每个字母,因此
a
,然后
t
,等等,并检查数组
[“a”、“t”、“g”、“c”]
是否包含在其中,这显然是错误的。它还只检查是否至少有一个这样做。您应该使用
all()
检查它们是否都是。您要做的是检查数组中是否存在该字母。这将使:

def valide(序列号): sub=[“a”、“t”、“g”、“c”] 如果所有(子项中的)表示所有(子项中的): 返回真值 其他: 返回错误 由于任何生成布尔值的字符串都是可编辑的,因此也可以通过以下方式对其进行压缩:

def valide(序列号): sub=“atgc” 返回所有子项中的项,用于返回序号中的项:
应该是
如果all(sub中的字母表示seq中的字母):return True,问题出在if语句@Harithit应该是
如果all(sub中的字母表示seq中的字母):return True,问题出在if语句@harith这不是OP想要的:“为有效,字符串应仅包含字母
a
t
g
c
“。您正在检查
sub
中的每个项目是否在
seq
中。当且仅当
seq
至少一次包含
a
t
g
c
时,您的方法才会返回true。您应该检查
seq
中的所有项目是否都在
sub
中。例如,
valide(“a”)
在不应该的时候返回
False
,而
valide(“atgcz”)
在不应该的时候返回
True
。是的,我很抱歉,我混淆了seq和sub。我的错。这不是OP想要的:“为有效,字符串应仅包含字母
a
t
g
c
“。您正在检查
sub
中的每个项目是否在
seq
中。当且仅当
seq
至少一次包含
a
t
g
c
时,您的方法才会返回true。您应该检查
seq
中的所有项目是否都在
sub
中。例如,
valide(“a”)
在不应该的时候返回
False
,而
valide(“atgcz”)
在不应该的时候返回
True
。是的,我很抱歉,我混淆了seq和sub。我的错。