Python 将列表串成字符串
我有一个字符串列表:Python 将列表串成字符串,python,string,list,Python,String,List,我有一个字符串列表: ['TTGGGAGAA', 'TTGGGAGCA', 'TTGGGAGTA'] 我想测试此列表中是否存在字符串: 例如,测试我的列表中是否存在“GTA”(=子序列) 我试过: OK = subsequence in list if OK == True: print (true) else: pass 但它不起作用。有人能帮我吗 这是不正确的,因为它会将列表的整个元素与子序列进行比较。而是这样做, for word in list: if subse
['TTGGGAGAA', 'TTGGGAGCA', 'TTGGGAGTA']
我想测试此列表中是否存在字符串:
例如,测试我的列表中是否存在“GTA”(=子序列)
我试过:
OK = subsequence in list
if OK == True:
print (true)
else: pass
但它不起作用。有人能帮我吗 这是不正确的,因为它会将列表的整个元素与
子序列进行比较。而是这样做,
for word in list:
if subsequence in word:
OK = True
break
您可以使用函数将其压缩为一行。使用
OK = any(subsequence in word for word in list)
您正在寻找一个子序列,所以
不起作用,因为它检查整个列表
你应该做:
OK = any(subsequence in l for l in list)
注意:我不建议使用“list”作为变量名,因为它在Python中是一个保留的关键字。您可以尝试以下列表理解:
a = ['TTGGGAGAA', 'TTGGGAGCA', 'TTGGGAGTA']
any(["GTA" in x for x in a])
如果数组中有任何序列包含“GTA”
,则返回True
。完成此任务的一种方法是使用正则表达式
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
这样,您就可以在列表中的字符串中搜索您的模式
下面是一个简单的例子:
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编译模式,因此进一步的搜索速度更快。只是一个示例代码供您参考,请帮助检查它是否适合您。
这是比较一个列表和另一个列表的最佳方法
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"
如果您正在寻找子序列,我建议使用for循环来迭代每个单词,并查看子序列是否在单词中。如果您想查看列表中的任何项目是否包含子序列,可以使用。例如:如果有(mylist中x的子序列):打印(“找到”)
如果列表中的子序列:
,为什么不写?它不像OK
是一个有意义的名字。好吧,那就行了!但是现在:如果我的子序列也是字符串列表呢。因此,我正在寻找两个列表之间的匹配。如果有相同的子串;打印“确定”是否总是将第一个字符串与第一个子序列进行比较?改为在问题中添加注释,或者最好问一个新问题看起来你把原来的问题复杂化了,
中的关键字足以回答问题,并且不需要正则表达式。此外,您将错误的参数传递给re.findall
@TrakJohnson使用正则表达式背后的想法是随着列表的增长而扩展解决方案。khelwood,re.findall的正确参数是什么?@XeroSmith您正在使用变量element
迭代src\u list
,但是您在调用findall
@khelwood时使用src\u list
而不是element
,谢谢,我看到了错误。我已作了相应的更正。我仍然支持可扩展解决方案的观点。
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"