繁体   English   中英

如何在列表python的所有项目中查找作为子字符串存在的列表中的项目

[英]How to find an item in a list that exists as a sub-string in all the items of a list python

我有一个短字符串列表和一个多个长字符串列表。 我想遍历短字符串列表并找出哪个短字符串在某个列表的所有项目中。
例如:

short_str_list = ["aga", "ttt", "aca"]

seq_list = ["atcgcgtacat", "acatcggggattt", "tttacagtgtgtggg"]

结果应该是:“aca”

有人可以帮我编写 python 脚本吗?

下面的双循环表达式做到了:

print([ss 
       for ss in short_str_list
       if all(ss in ls for ls in seq_list)
       ])

把问题分解成碎片。

首先创建一个函数来检查一个字符串是否在一系列字符串中:

def check_one(string, seqs):
    for seq in seqs:
        if string not in seq:
            return False
    return True

然后使用此函数创建一个检查所有字符串的函数:

def check_all(strings, seq):
    result = []

    for string in strings:
        if check_one(string, seq):
            result.append(string)

    return result

然后只需调用check_all()

short_str_list = ["aga", "ttt", "aca"]
seq_list = ["atcgcgtacat", "acatcgggattt", "tttacagtgtgtggg"]

print(check_all(short_str_list, seq_list))
# ['aca']

您还可以在一行中使用all()filter()和列表推导式来完成此操作:

print([x for x in short_str_list if all(x in y for y in seq_list)])
# ['aca']

print(list(filter(lambda x: all(x in y for y in seq_list), short_str_list)))
# ['aca']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM