自动在字符串列表中查找子集

rjzwgtxy  于 2022-10-02  发布在  Python
关注(0)|答案(2)|浏览(158)

我有一个字符串列表,其中包含由,分隔的一个或多个单词组成的字符串。列表项不是唯一的,可以以任何可能的组合重复。目前的名单是这样的:

list = ['Car', 'Bed, Car', 'Car', 'House', 'Sofa, Pen, Car', 'Pen', 'Pen', 'Car, Pen', 'Car']

现在,我希望所有可能的子集的长度至少为2(连续)。然而,我想要字符串的组合,而不是单词:组合应该是‘car’和‘ed,car’,而不是‘car’和‘ed’,因为它们不是连续出现的。

我还没有找到这样做的方法。每次我尝试查找子集时,代码都集中在单词上,而不是整个字符串上。

gr8qqesn

gr8qqesn1#

这可能不是很有毕达德风格,但它很管用:

my_list = ['Car', 'Bed, Car', 'Car', 'House', 'Sofa, Pen, Car', 'Pen', 'Pen', 'Car, Pen', 'Car']
result = []

for i in range(len(my_list)):
    for j in range(i + 2, len(my_list) + 1):
        result += [my_list[i:j]]

print(result)
b4lqfgs4

b4lqfgs42#

尝试使用itertools包中的combinations函数

from itertools import combinations

my_list = ['Car', 'Bed, Car', 'Car', 'House', 'Sofa, Pen, Car', 'Pen', 'Pen', 'Car, Pen', 'Car']
my_set = set(my_list)
result = [comb for r in range(2, len(my_set)) for comb in combinations(my_set, r)]

这段代码列出了至少两个长度的所有可能的唯一组合。

相关问题