我是编程新手,所以我提前为没有使用正确的条款而道歉。我正在使用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'...]
中,我的数字在引号之间,如果我想在其他地方使用它们,我是否需要摆脱它们?
谢谢你的时间。
答案 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))