python-3.x - 为什么比较列表时列表索引超出范围,但打印时却没有?
问题描述
我试图在转换为图像之前修改列表列表,但是当我按原样执行代码时出现索引错误:
#!/bin/python3
import matplotlib.image as img
import matplotlib.pyplot as plt
import numpy as np
plot_one=img.imread('RGB_test.png')
easy_list_1=plot_one.tolist()
plot_two=img.imread('RGB_test_2.png')
print(type(plot_two))
easy_list_2=plot_two.tolist()
ones=[1.0, 1.0, 1.0, 1.0]
print(easy_list_2[479])
print(easy_list_2[479][639])
for i in list(range(0,len(easy_list_1))):
for ii in list(range(0,len(easy_list_1[i]))):
for iii in [0,1,2,3]:
if easy_list_1[i][ii] == easy_list_2[i][ii]:
break
elif easy_list_1[i][ii] == ones and easy_list_2[i][ii] != ones:
easy_list_1[i][ii]=easy_list_2[i][ii]
break
else:
easy_list_1=[min((easy_list_1[i][ii][iii]+easy_list_2[i][ii][iii]), 1)]
image=np.array(easy_list_1)
plt.imshow(image)
错误出现在 'if easy_list_1[i][ii] == easy_list_2[i][ii]:'
但是,当我注释掉代码以简单地打印时,它可以正常工作:
#!/bin/python3
import matplotlib.image as img
import matplotlib.pyplot as plt
import numpy as np
plot_one=img.imread('RGB_test.png')
easy_list_1=plot_one.tolist()
plot_two=img.imread('RGB_test_2.png')
print(type(plot_two))
easy_list_2=plot_two.tolist()
ones=[1.0, 1.0, 1.0, 1.0]
print(easy_list_2[479])
print(easy_list_2[479][639])
for i in list(range(0,len(easy_list_1))):
for ii in list(range(0,len(easy_list_1[i]))):
for iii in [0,1,2,3]:
print(easy_list_1[i][ii])
print(easy_list_2[i][ii])
不是预期的功能。
我知道这些事情有解决方案,但是根据我对索引错误的理解,我应该有相同的索引超出范围错误(即,如果您输入的索引大于列表的长度,程序将崩溃,因为它是'超出范围')。根据我对错误的理解,打印应该没有区别。
我错过了什么?
解决方案
推荐阅读
- python - 如何格式化 ArcGIS FeatureSet/FeatureCollection 以与 Folium 一起使用
- java - java - 具有多个数组的休眠地图组件
- python - 为什么不使用python的逻辑运算符或“x == 5 or 4”的形式抛出错误?
- javascript - 在高图中显示高于零而不是低于零的负 Y 值
- c++ - 为什么我们需要将标准库用于字符串而不是 int 数据类型?
- python - 熊猫检查系列值是否在区间内
- javascript - 将 Wrapper+Canvas+Div 匹配到图像的大小
- windows - 是否可以在 VS Code 中打开两个文件并在 Beyond Compare 中打开它们?
- elasticsearch - elasticsearch 搜索产品指数,但按价格指数排序
- json - 使用 actix_web 对部分结构进行 Serde 反序列化