Nik*_*Nik 7 python arrays 2d matrix
我正在尝试创建一个2d矩阵,以便每个单元格包含一个字符串列表.矩阵维度在创建之前是已知的,我需要从头开始访问任何元素(不动态填充矩阵).=>我认为需要某种预先分配空间.
例如,我想有一个2X2矩阵:
[['A','B'] ['C'];
['d'] ['e','f','f']]
Run Code Online (Sandbox Code Playgroud)
支持传统的矩阵访问操作,如
(Matrix[2][2]).extend('d')
Run Code Online (Sandbox Code Playgroud)
要么
tmp = Matrix[2][2]
tmp.extend('d')
Matrix[2][2] = tmp
Run Code Online (Sandbox Code Playgroud)
操纵细胞内容.
如何在python中完成它?
就像你写的那样:
>>> matrix = [["str1", "str2"], ["str3"], ["str4", "str5"]]
>>> matrix
[['str1', 'str2'], ['str3'], ['str4', 'str5']]
>>> matrix[0][1]
'str2'
>>> matrix[0][1] += "someText"
>>> matrix
[['str1', 'str2someText'], ['str3'], ['str4', 'str5']]
>>> matrix[0].extend(["str6"])
>>> matrix[0]
['str1', 'str2someText', 'str6']
Run Code Online (Sandbox Code Playgroud)
只需将2D矩阵视为列表列表即可.
>>> matrix[0].append('value')
>>> matrix[0]
[0, 0, 0, 0, 0, 'value']
>>> matrix[0].pop()
'value'
>>>
Run Code Online (Sandbox Code Playgroud)
您可以使用基本的:
matrix = [
[["s1","s2"], ["s3"]],
[["s4"], ["s5"]]
]
Run Code Online (Sandbox Code Playgroud)
或者你可以很一般地做
from collections import defaultdict
m = defaultdict(lambda : defaultdict(list))
m[0][0].append('s1')
Run Code Online (Sandbox Code Playgroud)
在 defaultdict 情况下,您有一个可以使用的任意矩阵,任何大小,所有元素都是数组,可以相应地进行操作。