Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.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 索引器:列表索引超出范围。第7行 m=[[1,2,3], [2,1,3], [5,4,3]] 对于范围内的i(len(m)): 对于范围内的j(len(m)*len(m)): 如果我_Python - Fatal编程技术网

Python 索引器:列表索引超出范围。第7行 m=[[1,2,3], [2,1,3], [5,4,3]] 对于范围内的i(len(m)): 对于范围内的j(len(m)*len(m)): 如果我

Python 索引器:列表索引超出范围。第7行 m=[[1,2,3], [2,1,3], [5,4,3]] 对于范围内的i(len(m)): 对于范围内的j(len(m)*len(m)): 如果我,python,Python,如果您不一定对自己解决问题感兴趣,下面是一个使用numpy的示例: m = [[1,2,3], [2,1,3], [5,4,3]] for i in range(len(m)): for j in range(len(m)*len(m)): if i <= len(m) and j <= (len(m)*len(m)): m[i][j] <= m[i+1][j+1] is_sink = "T

如果您不一定对自己解决问题感兴趣,下面是一个使用numpy的示例:

m = [[1,2,3],
    [2,1,3],
    [5,4,3]]
for i in range(len(m)):
    for j in range(len(m)*len(m)):
        if i <= len(m) and j <= (len(m)*len(m)):
            m[i][j] <= m[i+1][j+1]
            is_sink = "True"
        if i <= (len(m)-1) and j <= (len(m)*len(m)):
            m[i][j] <= m[i+1][j]
            is_sink = "True"
        if i <= len(m) and j <= ((len(m)*len(m))-1):
            m[i][j] <= m[i][j+1]
            is_sink = "True"
        if i <= (len(m)-1) and j <= (len(m)*len(m)):
            m[i][j] <= m[i+1][j-1]
            is_sink = "True"
        if i <= len(m) and j <= (len(m)*len(m)):
            m[i][j] <= m[i-1][j+1]
            is_sink = "True"
        if i <= len(m) and j <= (len(m)*len(m)):
            m[i][j] <= m[i][j-1]
            is_sink = "True"
        if i <= len(m) and j <= (len(m)*len(m)):
            m[i][j] <= m[i-1][j]
            is_sink = "True"
        else:
            is_sink = "False"

对于代码中的问题:
j
也应该一直到
len(m)
(比如
i
)。为了检查索引是否在矩阵之外,不要忘记python索引从
0
n-1
,如果您有长度
n
的列表

如果您想自己解决矩阵中的最小值问题(无需任何其他导入),可以使用以下方法轻松完成:

import numpy as np
m = np.array([[1,2,3],
              [2,1,3],
              [5,4,3]]) 
np.where(m == m.min())
随机导入
m=[[1,2,3],[2,1,3],[5,4,3];
最小值=m[0][0]
对于范围内的i(len(m)):
对于范围内的j(len(m)):
如果m[i][j]<最小值:
最小值=m[i][j]
x=随机。随机数(0,len(m))
y=random.randint(0,len(m))
如果m[x][y]==最小值:
is_min=真;
else为_min=false;
打印(is_min)
因为您有一个方阵,所以列的长度与行的长度相同(意味着i和j都在len(m)的范围内)


要选择一个随机矩阵组件,可以计算表示矩阵中行和列的2个随机数。然后访问该组件,并将其与前面计算的矩阵中的最低点进行比较。

任何数据类型的长度都是在从0到元素数-1的范围内测量的。实际上,当您到达第三次迭代时(当J=2),您将尝试访问第一个if语句中的m[i+1][J+1],即3。嘿,感谢您的回复,我试图做的是找到最低点,然后比较子列表中的所有点,如果输入[0,2]是一个位置,则返回true或false。如果不是最低点,则返回false。最低点是指所有矩阵中的最小值?另外,您所说的“比较子列表中的所有点,如果输入[0,2]的位置为某个位置,则返回true或false”是什么意思?对不起,我指的是m[0][2]。我不知道如何共享和编辑,但我基本上是尝试选择任意点,并将其与“最低点”进行比较如果这是我想返回的最低点,那么我在上面的回答中为您提供了更多关于如何做到这一点的细节。
import random
m = [[1,2,3],[2,1,3],[5,4,3]];
min_value = m[0][0]
for i in range(len(m)):
    for j in range(len(m)):
        if m[i][j] < min_value:
            min_value = m[i][j]
x = random.randint(0, len(m))
y = random.randint(0, len(m))
if m[x][y] == min_value:
    is_min = true;
else is_min = false;
print(is_min)