这是问题:
给定Python中的项目列表,我将如何获取项目的所有可能组合?
在这个网站上有几个类似的问题,建议使用itertools.combine,但这只返回我需要的一部分:
stuff = [1, 2, 3]
for L in range(0, len(stuff)+1):
for subset in itertools.combinations(stuff, L):
print(subset)
()
(1,)
(2,)
(3,)
(1, 2)
(1, 3)
(2, 3)
(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
如你所见,它只返回严格顺序的项目,而不是返回(2,1),(3,2),(3,1),(2,1,3),(3,1,2),( 2,3,1)和(3,2,1).有一些解决方法吗?我似乎无法想出任何东西.
我想出了一个正则表达式字符串,它将给定的文本解析为3个类别:
像这样:
\[.+?\]|\(.+?\)|[\w+ ?]+
Run Code Online (Sandbox Code Playgroud)
我的目的是仅使用最外层的运算符.所以,给定a(b[c]d)e,分裂将是:
a || (b[c]d) || e
Run Code Online (Sandbox Code Playgroud)
它在括号内的括号或括号内的括号中工作正常,但在括号内的括号和括号内的括号时会分解.例如,a[b[c]d]e被拆分为
a || [b[c] || d || ] || e.
Run Code Online (Sandbox Code Playgroud)
有没有办法单独使用正则表达式来处理这个问题,而不是使用代码来计算打开/关闭括号的数量?谢谢!