python - 需要创建一个新的 Python 列表,其中包含另一个列表的所有可能的唯一组合

标签 python arrays multidimensional-array enumeration

我目前有一个选择列表:

a = ['D1', 
    'C1', 
    'D2', 
    'C2', 
    'D3', 
    'C3', 
    'D4', 
    'C4', 
    'D5', 
    'C5',]

我想要一个新列表,其中包含可能组合中的嵌套列表。像这样:

b = [
'D1', 
'C1', 
'D2', 
'C2', 
'D3', 
'C3', 
'D4', 
'C4', 
'D5', 
'C5',
['D1', 'C1'], 
['D1', 'D2'], 
['D1', 'C2'] 
.
. 
['D1', 'C1', 'D2'] 
.
. 
['D1', 'C1', 'D2', 'C2'] 
.
. 
['D1', 'C1', 'D2', 'C2', 'D3']
:
etc

最佳答案

查看 itertools.combinations :

b = []
for len_ in xrange(len(a)):
    b.extend(itertools.combinations(a, len_+1)

另见 powerset recipe来自 itertools 文档:

def powerset(iterable):
    "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
    s = list(iterable)
    return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))

关于python - 需要创建一个新的 Python 列表,其中包含另一个列表的所有可能的唯一组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15118741/

相关文章:

c++ - Arduino 中的字符串提取问题

javascript - 如何使用 javascript 在 HTML 中的数组中显示访问的(通过 for 循环)对象

c++ - 多功能阵列最后一行结果相同

python - 元素出现一定次数后删除

python - 如何使用numpy在Python中删除包含特定字符串的行?

c++函数返回带偏移量的数组

PHP在多维数组中添加元素

python - 有没有办法使用 python 脚本运行 ELinks,比如 FireFox 和 Selenium webdriver 和 python

python - 在 Python 中计算矢量场的旋度并使用 matplotlib 绘制它

php - 如何将mysql获取的数据再次插入数据库表中