Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中通过动态分配将两个数组合并为一个_Python_Arrays_Multidimensional Array - Fatal编程技术网

在Python中通过动态分配将两个数组合并为一个

在Python中通过动态分配将两个数组合并为一个,python,arrays,multidimensional-array,Python,Arrays,Multidimensional Array,我有两个数组,list\u string&list\u string2。它们的值是静态指定和填充的(在编辑器中) 我读了一些书,看到了关于定义、初始化2D数组的其他线程,但所有这些线程都创建了新数组并静态地赋值。我正在尝试动态分配值,但是 我得到了错误代码 回溯(最近一次调用上次):文件 “C:……简介2.py”,第12行 arr.append([list_string[i]][list_2[j]])类型错误:列表索引必须是整数或片,而不是str 使用的索引i&j肯定是整数,因为它们通过rang

我有两个数组,
list\u string
&
list\u string2
。它们的值是静态指定和填充的(在编辑器中)

我读了一些书,看到了关于定义、初始化2D数组的其他线程,但所有这些线程都创建了新数组并静态地赋值。我正在尝试动态分配值,但是 我得到了错误代码

回溯(最近一次调用上次):文件 “C:……简介2.py”,第12行 arr.append([list_string[i]][list_2[j]])类型错误:列表索引必须是整数或片,而不是str

使用的索引i&j肯定是整数,因为它们通过range方法循环。有人能解释为什么会发生这种情况吗

编辑2:

预期产出:

[“1”“1”“12”“15”“21”“131”]

[“2”“1”“12”“15”“21”“131”]

[“3”“1”“12”“15”“131”]

[“4”1.……“131”]

[“5”……“131”]

代码更改:

我发现了一些越界索引错误,并对代码进行了如下修改(错误仍然存在)


回答:

如果我理解正确,您不需要
行、coln
变量,因为循环取决于
list\u string
list\u string2

arr = [list_string[:] for _ in range(len(list_string2))]
for i, l in enumerate(arr): 
   l.insert(0, list_string2[i]) 
这将产生您的预期输出

>>> print(arr)
[['1', '1', '12', '15', '21', '131'],
 ['2', '1', '12', '15', '21', '131'],
 ['3', '1', '12', '15', '21', '131'],
 ['4', '1', '12', '15', '21', '131'],
 ['5', '1', '12', '15', '21', '131']]

首先,这里有一个额外的括号

arr[i][j] = [list_string[i]] [list_string2[j]])
                                              ^
为了解释这个错误,它来自这里

arr[i][j] = [list_string[i]] [list_string2[j]]
[list\u string[i]
计算为一个新列表,其中包含
list\u string
中的元素。对于
i=0
,这是
[“1”]
。对于
[list\u string2[j]
而言,它是
[“1”
对于
j=0

当你把方括号放在一个列表后面时,语法上就是访问列表中的一个元素

lstr = ["1"]            # [list_string[0]]
arr[i][j] = lstr["1"]   # [list_string[0]] [list_string2[0]]

您试图访问列表中没有意义的元素
“1”
。这就是您得到
类型错误的原因:列表索引必须是整数或切片,而不是str

arr[i][j]=[list_string[i]]][list_string2[j]]
看起来不正确。您缺少的
括号和其他内容。如2d矩阵=[[“0”“1”“12”“131”“131”“][1”“1”“12”“131”“][1”“][1”“][1”“][12”“][1”“][1”“][1”“][1”“][1”“][1”“1”“12”“13”“][/code>@RoadRunner”“应该在哪里?”。将arr的第0个索引,即arr[0][0]分配给[list_string[0]][list_string 2[0]]方括号被放置,所以可以从这些索引中获取值,并且可以被分配给ARR,它将在循环中的一个点上具有相同的索引。如果一个字符串值被分配给ARR,那么它不应该把ARR看作字符串的一个列表吗?这就是这里的错误。你的预期结果不清楚。更新问题。对于预期的输出,我将尝试给您一个更好的解释。我做了一些更改,在编辑中进行了解释,我希望现在它更清晰。感谢您的
列表中没有
0
\u string2
,无论编辑的第一行是什么
arr[i][j] = [list_string[i]] [list_string2[j]]
lstr = ["1"]            # [list_string[0]]
arr[i][j] = lstr["1"]   # [list_string[0]] [list_string2[0]]