gpt4 book ai didi

python - 检查 'partial' 字符串列表是否在完整字符串列表中

转载 作者:太空狗 更新时间:2023-10-30 02:29:23 26 4
gpt4 key购买 nike

对不起标题,真的想不出一个简单的方法来解释这种情况。

所以如果我有一个字符串列表,例如:

list_1 = [ "cat", "rat", "mat" ]

我如何检查所有这些字符串是否都在另一个可能有“绒毛”的列表中(我的意思是,不是说“cat”,它可能有“cat_mittens”,这很好,但是“car_mittens” “不是)。

例如:

list_A = [ "cat", "car", "cab" ]
list_B = [ "cat", "rat", "bat", "mat" ]
list_C = [ "cat_mittens", "rat", "mat" ]

在这里,如果我对 list_A 进行分析,我希望返回 False,对于 list_B,我希望返回 True,同样对于 list_C 我希望返回 True(因为它包含列表 A 的所有 3 个字符串,即使“cat”周围有额外的位(我称之为绒毛)。

我目前的做法是:

list_1 = [ "cat", "rat", "mat" ]
list_C = [ "cat_mittens", "rat", "mat" ]

temp_list = [False,] * 3

count = 0
for temp_1 in list_1:
temp_list[ count ] = any( temp_1 in temp_2 for temp_2 in list_C )
count += 1

result = all( temp_list )

有一个额外的复杂性,在我的实际代码中,列表 C 中的所有字符串都需要包含一个额外的字符串(例如,所有都需要说“_filetype”)但这不是一个问题(我在最后的“全部”声明)。

我的方法有效,但在我看来它相当困惑(尤其是因为我将事物称为临时事物,这使得它可能不清楚什么是什么。我想我可以将它们重命名为其他名称,但在我的脑海中我可以想不出任何有意义的名字来命名它们)而且我不确定它到底有多有效。

还有其他方法可以实现吗?

对不起,如果我没有解释清楚!如果有任何需要澄清的地方,请告诉我。

最佳答案

def check_all(substrings, strings):
"""Check all *substrings* are in *strings*."""
return all(any(substr in s for s in strings) for substr in substrings)

例子:

>>> list_1 = [ "cat", "rat", "mat" ]
>>> list_A = [ "cat", "car", "cab" ]
>>> list_B = [ "cat", "rat", "bat", "mat" ]
>>> list_C = [ "cat_mittens", "rat", "mat" ]
>>> check_all(list_1, list_A)
False
>>> check_all(list_1, list_B)
True
>>> check_all(list_1, list_C)
True
>>> check_all(list_1, ["ratcatmat"])
True
>>> check_all(["bc", "ab"], ["abc"])
True

关于python - 检查 'partial' 字符串列表是否在完整字符串列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32653654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com