我有一个字符串列表:
['TTGGGAGAA', 'TTGGGAGCA', 'TTGGGAGTA']
我想测试此列表中是否存在字符串: 因此,例如,测试GTA' (=子序列)出现在我的列表中
我试过了:
OK = subsequence in list
if OK == True:
print (true)
else: pass
但它不起作用。有人能帮助我吗?
答案 0 :(得分:5)
这是不正确的,因为它会将列表的整个元素与subsequence
进行比较。相反,这样做,
for word in list:
if subsequence in word:
OK = True
break
您可以使用any()
功能将其压缩为一行。使用
OK = any(subsequence in word for word in list)
答案 1 :(得分:4)
您正在寻找子序列,所以
subsequence in list
无法正常工作,因为它会检查整个列表。
你应该这样做:
OK = any(subsequence in l for l in list)
注意:我不建议使用" list"作为变量名,因为它是Python中保留的关键字。
答案 2 :(得分:0)
你可以尝试使用这样的列表理解:
PLAY RECAP *********************************************************************
192.3.9.155 : ok=3 changed=2 unreachable=0 failed=0
如果数组中有任何序列中有a = ['TTGGGAGAA', 'TTGGGAGCA', 'TTGGGAGTA']
any(["GTA" in x for x in a])
,则返回True
。
答案 3 :(得分:0)
alist = ['TTGGGAGAA', 'TTGGGAGCA', 'TTGGGAGTA', 'TGA']
print('GTA' in alist) # False
print('TGA' in alist) # True as TGA is a list element
# this is what you probably want
# string search instead of list search
print('GTA' in '|'.join(alist)) # True
答案 4 :(得分:0)
只是一个示例代码供您参考,请帮助检查它是否适合您。 它是用于比较另一个列表中的一个列表。
listab = ['a', 'b']
listabc = ['a', 'b', 'c']
if all(each in listabc for each in listab):
print "It is the subsequence"
else:
print "Not a subsequence"
答案 5 :(得分:-2)
完成此任务的一种方法是使用regural表达式。
这样您就可以在列表中的字符串中搜索您的模式。
下面是一个简单的例子:
import re
pattern = re.compile('GTA')
src_list = ['TTGGGAGAA', 'TTGGGAGCA', 'TTGGGAGTA']
for element in src_list
if re.findall(pattern, element):
print(True)
break
请注意,re.compile会编译模式,因此进一步搜索会更快。