我想在1蟒蛇中获得2个列表

时间:2013-12-10 17:28:23

标签: python list

我是编程新手,所以我提前为没有使用正确的条款而道歉。我正在使用Python。我有一系列此表单[n1,...,n13]array [0,0,1](不变)的列表。我想以这种形式将数组附加到列表中。

x =[[[n1,...,n13], [0,0,1]], [[m1,...,m13], [0,0,1]], [[x1,...,x13], [0,0,1]],...]

我不知道怎么做。 另外,在我的列表['n1','n2'...]中,我的数字在引号之间,如果我想在其他地方使用它们,我是否需要摆脱它们? 谢谢你的时间。

2 个答案:

答案 0 :(得分:2)

您可以使用列表推导来迭代列表元素并向其添加数组

In [15]: a =[0,0,1]

In [16]: l =[['1','2','3'],['1','2','3'],['1','2','3']]

In [18]: print [[i ,a] for i in l]
[[['1', '2', '3'], [0, 0, 1]], [['1', '2', '3'], [0, 0, 1]], [['1', '2', '3'], [0, 0, 1]]]

修改

将字符串转换为int

In [19]: print [[map(int,i) ,a] for i in l]
[[[1, 2, 3], [0, 0, 1]], [[1, 2, 3], [0, 0, 1]], [[1, 2, 3], [0, 0, 1]]]

修改

正如Raydel Miranda指出的那样,如果你在代码中的其他地方更新数组,

[@ Raydel Miranda - 抱歉,由于我的分数不高,我不能投票或发表评论。你提出了一个有效的点]

In [21]: x
Out[21]: [[[1, 2, 3], [0, 0, 1]], [[1, 2, 3], [0, 0, 1]], [[1, 2, 3], [0, 0, 1]]]

In [22]: a.append(1)

会改变

In [23]: x
Out[23]: 
[[[1, 2, 3], [0, 0, 1, 1]],
 [[1, 2, 3], [0, 0, 1, 1]],
 [[1, 2, 3], [0, 0, 1, 1]]]

因此,您可以使用Raydel Miranda在下面建议的内容或

In [24]: x= [[map(int,i) ,list(a)] for i in l]

In [25]: x
Out[25]: 
[[[1, 2, 3], [0, 0, 1, 1]],
 [[1, 2, 3], [0, 0, 1, 1]],
 [[1, 2, 3], [0, 0, 1, 1]]]

In [26]: a.append(2)

In [27]: x
Out[27]: 
[[[1, 2, 3], [0, 0, 1, 1]],
 [[1, 2, 3], [0, 0, 1, 1]],
 [[1, 2, 3], [0, 0, 1, 1]]]

答案 1 :(得分:2)

import copy      # copy is need it for prevent putting the same reference of
                 # array in all list elements.

lst = [[1,2,3], [1,2,3], [1,2,3]]  # Some list
array = [0,0,1]                    # Some array

result = [[x, copy.copy(array)]  for x in lst]   # Add a [x, <copy_of_array>] pair to result
                                                 # for each x in lst.

这是另一种做同样的方法:

import copy

lst = [[1,2,3], [1,2,3], [1,2,3]]
array = [0, 0, 1]
result = []

for (elem in lst):
     result.append([copy.copy(elem), copy.copy(x)])

编辑:为什么要使用副本?

请按照下一个示例:

>>> l = [1,2,3]  # We have some list
>>> k = []       # another list.
>>> k.append(l)  # now, k is: [[1, 2, 3]]
>>> l[0] = "changed" # Change the first element of l. Now l == ["changed", 2, 3]
>>> print(k)  # What is in k value ??
>>> [["changed", 2, 3]] # k value change too!!!

为了避免你必须使用副本(或等效的)。

>>> k.append(copy.copy(l))