将列表吐入字符串

时间:2016-12-22 13:56:36

标签: python string list

我有一个字符串列表:

['TTGGGAGAA', 'TTGGGAGCA', 'TTGGGAGTA']

我想测试此列表中是否存在字符串: 因此,例如,测试GTA' (=子序列)出现在我的列表中

我试过了:

OK = subsequence in list 
if OK == True: 
    print (true)
else: pass

但它不起作用。有人能帮助我吗?

6 个答案:

答案 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会编译模式,因此进一步搜索会更快。