python中的2d列表

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中完成它?

Kla*_*ark 9

就像你写的那样:

>>> 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)


kob*_*las 5

您可以使用基本的:

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 情况下,您有一个可以使用的任意矩阵,任何大小,所有元素都是数组,可以相应地进行操作。