创建列表和附加列表

时间:2016-09-15 09:46:18

标签: python list append

a=[[2,3],[3,4]]
b=[[5,6],[7,8],[9,10]]
c=[[11,12],[13,14],[15,16],[17,18]]
c1=[[11,12],[13,14],[15,16],[17,18]]

listr=[]        
for number in range(96):
    listr.append(number)

list = [[]]*96
for e in a:
    for f in b:
        for g in c:
            for h in d:
                for i in listr:
                    list[i].append(e)
                    list[i].append(f)
                    list[i].append(g)
print list

我对这个简单的问题感到很困难。我想从上面的列表中创建可能的每种组合的列表。如果列表重复,如[[2,3],[5,6],[11,12],[11,12]]那样不好,第一个组合将是[[2,3],[ 5,6],[11,12],[13,14]。这不是一个好的开始,但我知道这并不难,但我的编程技巧并不强。

最终列表看起来像

[[[2,3],[5,6],[11,12],[13,14]],[[2,3],[5,6],[11,12],[15,16]],[[2,3],[5,6],[11,12],[17,18]],...,[[3,4],[9,10],[15,16],[17,18]]]

我还想在每个列表中添加每个列表的第一个数字并将它们一起添加。 [31],[33],[35],...,[44]]

1 个答案:

答案 0 :(得分:2)

您可能希望使用itertools.product来解决此问题。

假设您想要{4},abc的组合,以4个为一组(根据您的预期输出,我认为您的输入错误我正在呼叫d的{​​{1}},根据需要进行调整:

c1

顺便说一句,当你试图创建一个int的列表时,而不是:

d

你只需要这样做:

>>> import itertools
>>> a = [[2, 3], [3, 4]]  # are you sure this isn't actually [[1, 2], [3, 4]]?
>>> b = [[5, 6], [7, 8], [9, 10]]
>>> c = [[11, 12], [13, 14]]
>>> d = [[15, 16], [17, 18]]
>>>
>>> list(itertools.product(a, b, c, d))
[([2, 3], [5, 6], [11, 12], [15, 16]),  # pretty printed for readability
 ([2, 3], [5, 6], [11, 12], [17, 18]),
 ([2, 3], [5, 6], [13, 14], [15, 16]),
 ([2, 3], [5, 6], [13, 14], [17, 18]),
 ...
 ([3, 4], [9, 10], [13, 14], [17, 18])]
>>> len(list(itertools.product(a, b, c, d)))
24