Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 我试图在循环时访问2D阵列的其他部分,但不确定具体是如何完成的_Python_Arrays_Python 3.x_List_While Loop - Fatal编程技术网

Python 我试图在循环时访问2D阵列的其他部分,但不确定具体是如何完成的

Python 我试图在循环时访问2D阵列的其他部分,但不确定具体是如何完成的,python,arrays,python-3.x,list,while-loop,Python,Arrays,Python 3.x,List,While Loop,这是一个包含一些值的二维列表。我想将列表中的每个值乘以1.1,如果某个值等于或大于255,则会提示“烧坏”。我的程序目前只能访问列表中的第一个列表并将其值相乘。我希望它也能为其他人做这件事。多谢各位 列表=[[240,10,10,10,10,10,10240], [80,80,240,80,80,240,80,80], [80,80,240,80,80,240,80,80], [80,80,150,150,150,150,80,80], [80,80,240,240,240,240,80,80]

这是一个包含一些值的二维列表。我想将列表中的每个值乘以1.1,如果某个值等于或大于255,则会提示“烧坏”。我的程序目前只能访问列表中的第一个列表并将其值相乘。我希望它也能为其他人做这件事。多谢各位

列表=[[240,10,10,10,10,10,10240], [80,80,240,80,80,240,80,80], [80,80,240,80,80,240,80,80], [80,80,150,150,150,150,80,80], [80,80,240,240,240,240,80,80], [80,80,150,150,150,150,80,80], [240,240,150,150,150,150,240,240], [240,240,150,150,150,150,240,240]] i=0 r=0 而我<8: 当r<8时: 列表[i][r]=列表[i][r]*1.1 如果列表[i][r]>255: 列表[i][r]=烧毁 打印列表[i][r] r+=1 i+=1
完成内部循环后,需要将r的值重置为0。否则,内部循环将始终在r设置为8的情况下测试条件,因此在第一次执行后不再执行

更新代码:

list = [[240,10,10,10,10,10,10,240],[80,80,240,80,80,240,80,80],[80,80,240,80,80,240,80,80],[80,80,150,150,150,150,80,80],[80,80,240,240,240,240,80,80],[80,80,150,150,150,150,80,80],[240,240,150,150,150,150,240,240],[240,240,150,150,150,150,240,240]]
i = 0
r =0
while i < 8:
    while r < 8:
        list[i][r] = list[i][r]*1.1
        if list[i][r] > 255:
            list[i][r] = "burnt out"
        print (list[i][r])
        r += 1
    i += 1
    r = 0

必须为i的每个循环重置r=0

list = [[240,10,10,10,10,10,10,240], 
        [80,80,240,80,80,240,80,80],
        [80,80,240,80,80,240,80,80],
        [80,80,150,150,150,150,80,80],
        [80,80,240,240,240,240,80,80],
        [80,80,150,150,150,150,80,80],
        [240,240,150,150,150,150,240,240],
        [240,240,150,150,150,150,240,240]]
i = 0
while i < 8:
    r = 0  # put inside the loop
    while r < 8:
        list[i][r] = list[i][r]*1.1
        if list[i][r] > 255:
            list[i][r] = "burnt out"
        print (list[i][r])
        r += 1
    i += 1

在您的代码中,r=8表示i>0,这是使用列表理解和映射函数来实现这一点的最常用的python方法

nlist=[[240,10,10,10,10,10,10240], [80, 80, 240, 80, 80, 240, 80, 80], [80, 80, 240, 80, 80, 240, 80, 80], [80, 80, 150, 150, 150, 150, 80, 80], [80, 80, 240, 240, 240, 240, 80, 80], [80, 80, 150, 150, 150, 150, 80, 80], [240, 240, 150, 150, 150, 150, 240, 240], [240, 240, 150, 150, 150, 150, 240, 240]] nlist[:]=[listmaplambda x:x*1.1如果x*1.1在这种情况下,我将使用一个简单的for循环:

for v1 in list_:
    for i2, v2 in enumerate(v1):
        v1[i2] = v2 * 1.1
        if v1[i2] > 255:
            v1[i2] = 'BURN OUT'
顺便说一句,不要对变量名使用保留字列表

输出: [11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,“燃尽”], [88.0,88.0,'燃尽',88.0,88.0,'燃尽',88.0,88.0], [88.0,88.0,'燃尽',88.0,88.0,'燃尽',88.0,88.0], [88.0, 88.0, 165.0, 165.0, 165.0, 165.0, 88.0, 88.0], [88.0,88.0,‘燃尽’、‘燃尽’、‘燃尽’、‘燃尽’、‘燃尽’、‘88.0,88.0], [88.0, 88.0, 165.0, 165.0, 165.0, 165.0, 88.0, 88.0], [BURN OUT',BURN OUT',165.0,165.0,165.0,165.0,165.0',BURN OUT',BURN OUT'], ['BURN OUT','BURN OUT',165.0,165.0,165.0,165.0','BURN OUT','BURN OUT']
这应该行得通。发生了什么?为什么要使用while循环?你没有在内部循环之后重置r的值!所有这些都放在一边,这让你很痛苦,你研究过numpy吗?
for v1 in list_:
    for i2, v2 in enumerate(v1):
        v1[i2] = v2 * 1.1
        if v1[i2] > 255:
            v1[i2] = 'BURN OUT'