gpt4 book ai didi

python - 检查字符串列表中的字符子集是否包含在另一个字符串列表中

转载 作者:太空宇宙 更新时间:2023-11-04 08:43:26 24 4
gpt4 key购买 nike

所以我有两个字符串列表。这些字符串由一个或多个不同字符的排序组合形成。字符不全是字母,而是给定的。

比方说,所有可能的字符都是 [A、B、C、D、E],然后两个列表具有这些元素的组合(在本例中为 1 到 5)。

例子:

list1 = [AB, AB, C]
list2 = [ABC, CD, ABCDE, E]

每个列表中的元素数量没有定义,但可以在 1 到 30 之间,一般情况下在 10 左右。

现在,我想要判断 list1 中的每个字符串是否至少有一个唯一字符组合也存在于 list2 中,无论顺序如何。在示例中,[A, A, C] 包含在带有 [A, C, A, E] 的 list2 中。

我发现这样做的天真方法是从每个列表中进行所有可能的 1 字符组合,看看是否存在至少一种情况,其中 list1 包含在 list2 中.但这可能会呈指数级增长,因为 5 个字符的字符串的 10 个元素列表的所有可能组合可能会很大(这只是一般情况)。

我考虑过使用正则表达式或类似的东西,但我真的没有想到更有效的解决方案。

我正在为此使用 Python。由于现有解决方案或库,以防万一是相关的。

感谢您的帮助!

最佳答案

这可能是集合运算的主要候选对象。让我们以您的示例为例(注意,我们需要添加引号以使其成为字符串)。

list1 = ["AB", "AB", "C"]
list2 = ["ABC", "CD", "ABCDE", "E"]

如果我们想要一个包含来自 list1list2 的唯一元素的集合

print(set(list1) | set(list2))
#OUTPUT: {'C', 'AB', 'ABCDE', 'CD', 'ABC', 'E'}

如果我们想检查哪些元素在 list1list2 中是共同的(如果我们要将“C”添加到 list2 我们会有 {'C'} 的输出,否则,没有共享的公共(public)元素会导致空 set())

print(set(list1) & set(list2)) 
#OUTPUT: set()

如果我们想要list1中但不在list2中的元素

print(set(list1) - set(list2))
#OUTPUT: {'C', 'AB'}

如果我们想要一个包含 list1list2 中的元素的集合

print(set(list1) ^ set(list2)) 
#OUTPUT: {'E', 'CD', 'AB', 'ABC', 'C', 'ABCDE'}

有关更多信息,您可以查看 https://docs.python.org/2/library/sets.html

希望对您有所帮助!

关于python - 检查字符串列表中的字符子集是否包含在另一个字符串列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42824074/

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