python - python:迭代时增加循环
问题描述
以下代码遍历填充有递增数字的整个矩阵,并检查一行中的每个元素与前一行相同位置的元素之间的差异。对于每次迭代,如果两个元素的差小于 3,则计数器增加,然后循环中断并继续到下一行。我想做的是在每次计数器增加时尝试增加这个循环。换句话说,如果例如循环在检查前两行后遇到此条件,并且每行的长度为 3,则应考虑行长度 = 6 进行以下迭代,如果稍后再次满足此条件,则考虑行长应该是 9 等等。需要明确的是,这段代码返回 3,但根据我想要做的,它应该返回 1。
很抱歉不清楚,但这有点难以正确解释,我仍然会尽我所能,随时问我你可能有的任何具体问题,我很乐意回答。在本例中,循环从第一行 [1,2,4] 中减去第二行 [4,6,6],由于 4-1=3、6-2=4 和 6-4=2,只有后者小于 3,因此 k 增加 1。然后在第二行的第三个中,7-6=1 小于 3,因此不需要检查 8-6,这里 k 也增加 1,所以现在我们有 k=2,在最后一行,[9,9,10]-[7,7,8] 给了我们小于 3 的元素,因此我们的 k=3。现在,我要做的是:一旦 [4,6,6]-[1,2,4] 将 k 增加 1,我希望将第一行和第二行视为一个子列表 [1, 2,4,4,6,6],因此即使是第 3 行和第 4 行也是一个子列表 [7,7,8,9,9,
我希望我解释得足够清楚。如果没有,请随时询问。
matrix=[[1,2,4],
[4,6,6],
[7,7,8],
[9,9,10]]
cell_list=[]
for row in matrix:
for cell in row:
cell_list.append(cell)
len_cell_list=(len(cell_list))
len_matrix_row=len(matrix[0])
k=0
k_list=[]
for i in range(1,len(matrix)):
for j in range(len_matrix_row):
if abs(matrix[i][j]-matrix[i-1][j])<3:
k+=1
k_list.append(k)
break
continue
print(k_list[-1])
解决方案
我想这就是你想要的。
import numpy
matrix=[[1,2,4],
[4,6,6],
[7,7,8],
[9,9,10]]
k = 0
end_of_matrix = False
changing_matrix = matrix[:]
while not end_of_matrix:
end_current_loop = False
for i in range(1, len(changing_matrix)):
for j in range(len(changing_matrix[i])):
if abs(changing_matrix[i][j] - changing_matrix[i-1][j]) < 3:
k += 1
end_current_loop = True
break
if end_current_loop:
break
if not end_current_loop:
end_of_matrix = True
else:
changing_matrix = []
for i in range(0, len(matrix), k+1):
changing_matrix.append(list(numpy.concatenate(matrix[i:i+k+1])))
print(changing_matrix)
print(k)
输出:
[[1, 2, 4, 4, 6, 6], [7, 7, 8, 9, 9, 10]]
1
推荐阅读
- angular - 轮询效果 Ngrx
- amazon-web-services - Kubernetes 节点没有获得正确的标签
- django - Django 保存、删除和查看用户上传的同名媒体
- java - Jolie 和 Spring Boot 注释 - 怎么做?
- spring - Spnego Kerberos Spring SSO 显示 Kerberos 验证不成功
- angular - 如何实现 *ngIf 在同一页面上的两个组件之间切换(隐藏和显示)
- wiremock - Making stubs permanent on wiremock
- javascript - How to set the selected value of a dynamically created select box
- javascript - Netlify Deployment (Nuxt - Storyblok CMS project) failure. `Failed during stage 'building site': Build script returned non-zero exit code: 1`
- node.js - How to change Content-Type: appication/x-www-form-urlencoded to application/json?