我有一个字符串列表,其中包含由,
分隔的一个或多个单词组成的字符串。列表项不是唯一的,可以在任何可能的组合中重复。目前的清单如下:
list = ['Car', 'Bed, Car', 'Car', 'House', 'Sofa, Pen, Car', 'Pen', 'Pen', 'Car, Pen', 'Car']
现在,我希望所有可能的子集至少有两个长度(连续)。然而,我想要字符串的组合,而不是单词:组合应该是“汽车”和“床”,而不是“车”和“床”,因为它们不会连续出现。
我还没有找到办法来做到这一点。每次我试图找到子集时,代码都集中在单词上,而不是整个字符串.
发布于 2022-10-01 23:37:02
这可能不是非常Pythonic的,但它起作用了:
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)
发布于 2022-10-01 23:47:08
尝试使用来自combinations
包的itertools
函数
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)]
此代码列出至少两个长度的所有可能的唯一组合。
https://stackoverflow.com/questions/73924082
复制