Python数组统计1的数量结果始终为0,求问题排查
问题分析与修复
核心问题1:行列数赋值颠倒
你把数组的行数和列数搞反了:
len(myarray[0,:])获取的是第一行的元素个数,也就是数组的列数len(myarray[:,1])获取的是第二列的元素个数,也就是数组的行数
原本的rows和columns赋值完全颠倒,导致循环范围错误,无法遍历到正确的数组元素。
核心问题2:内层循环变量未重置
内层循环的j仅在初始化时设为0,第一次外层循环(i=0)执行完后,j已经等于columns,后续外层循环(i≥1)时,j < columns的条件直接不成立,根本不会遍历后面的行,自然统计不到后续行里的1。
修复后的代码
# 修正行列数的赋值逻辑 rows = len(myarray[:, 1]) columns = len(myarray[0, :]) number_of_coordinates = 0 i = 0 while i < rows: # 每次外层循环开始时重置j为0 j = 0 while j < columns: if int(myarray[i][j]) == 1: print("Found one!") number_of_coordinates += 1 j += 1 i += 1 print(number_of_coordinates)
更简洁的替代写法(可选)
用for循环可以避免手动管理循环变量的问题,代码可读性更强:
number_of_coordinates = 0 for row in myarray: for num in row: if int(num) == 1: print("Found one!") number_of_coordinates += 1 print(number_of_coordinates)
内容的提问来源于stack exchange,提问作者mbruenning
相关产品推荐
相关产品推荐

