24 python arrays tuples list multidimensional-array
在Python中创建2D数组的最佳方法是什么?
我想要的是存储这样的值:
X , Y , Z
Run Code Online (Sandbox Code Playgroud)
这样我就可以访问数据,X[2],Y[2],Z[2]
或者X[n],Y[n],Z[n]
在哪里n
可变.我不知道一开始n
会有多大,所以我想在最后添加值.
Per*_*vic 22
>>> a = []
>>> for i in xrange(3):
... a.append([])
... for j in xrange(3):
... a[i].append(i+j)
...
>>> a
[[0, 1, 2], [1, 2, 3], [2, 3, 4]]
>>>
Run Code Online (Sandbox Code Playgroud)
S.L*_*ott 10
根据你正在做的事情,你可能没有二维阵列.
80%的时候你有简单的"行状对象"列表,这可能是正确的序列.
myArray = [ ('pi',3.14159,'r',2), ('e',2.71828,'theta',.5) ]
myArray[0][1] == 3.14159
myArray[1][1] == 2.71828
Run Code Online (Sandbox Code Playgroud)
更常见的是,它们是一个类或字典或集合的实例,或者您以前的语言中没有的更有趣的东西.
myArray = [ {'pi':3.1415925,'r':2}, {'e':2.71828,'theta':.5} ]
Run Code Online (Sandbox Code Playgroud)
20%的时间你有一本字典,由一对键入
myArray = { (2009,'aug'):(some,tuple,of,values), (2009,'sep'):(some,other,tuple) }
Run Code Online (Sandbox Code Playgroud)
很少,你真的需要一个矩阵.
Python中有大量的集合类.你有比矩阵更有趣的东西是好的.
如果你想对数组做一些认真的工作,那么你应该使用numpy库.这将允许您进行矢量加法和矩阵乘法,对于大型数组,它比Python列表快得多.
但是,numpy要求大小是预定义的.当然,您也可以将numpy数组存储在列表中,例如:
import numpy as np
vec_list = [np.zeros((3,)) for _ in range(10)]
vec_list.append(np.array([1,2,3]))
vec_sum = vec_list[0] + vec_list[1] # possible because we use numpy
print vec_list[10][2] # prints 3
Run Code Online (Sandbox Code Playgroud)
但是由于你的numpy数组非常小,我想与使用元组相比有一些开销.这一切都取决于你的优先事项.
也看到此其它问题,这是非常相似(除了可变大小).
我建议你使用这样的字典:
arr = {}
arr[1] = (1, 2, 4)
arr[18] = (3, 4, 5)
print(arr[1])
>>> (1, 2, 4)
Run Code Online (Sandbox Code Playgroud)
如果您不确定字典中是否定义了条目,则在调用"arr [x]"时需要验证机制,例如try-except.
归档时间: |
|
查看次数: |
149451 次 |
最近记录: |