【问题标题】:How to find an item in a list that exists as a sub-string in all the items of a list python如何在列表中的所有项目中查找作为子字符串存在的项目python
【发布时间】:2017-12-03 10:51:36
【问题描述】:

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

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

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

结果应该是: “阿卡”

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

【问题讨论】:

标签: python python-3.x substring


【解决方案1】:

将问题分解为多个部分。

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

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']

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 2010-11-29
      • 1970-01-01
      • 2015-06-11
      • 1970-01-01
      相关资源
      最近更新 更多