gpt4 book ai didi

python - 保持前一个项目在列表项目循环中可访问的优雅方式

转载 作者:太空宇宙 更新时间:2023-11-04 01:57:22 25 4
gpt4 key购买 nike

总结:

在 Python 项目中,我需要对具有相同内部索引和相邻外部索引的列表列表中的每两个元素应用一个函数。输出存储在一个新矩阵中。

我写的代码可以工作,但不够优雅,pyflakes 会提示它。

如何清理这段代码?

附加信息:

我正在编写的代码是解决数字难题的模块的一部分。

有一次我循环遍历了一个类实例列表。
它们代表运动场中成行的单元格。
我需要对每两个垂直相邻的单元格应用一个函数,
并将其输出存储在新矩阵中。

在这里,一对单元格中的哪一个在前并不重要,但这些对需要按顺序排列。

代码摘录:

def func(cell_matrix):
out_matrix = []
for y_pos, line in enumerate(cell_matrix):
out_line = []
if y_pos != 0:
for x_pos, cell in enumerate(line):
out_line.append(compare_func(prev_line[x_pos], cell)
out_matrix.append(out_line)
prev_line = line
return out_matrix

pyflakes 提示什么:

Line 7: pyflakes [E]: undefined name 'prev_line'
Line 9: pyflakes [E]: local variable 'prev_line' is assigned to but never used

最佳答案

我建议只使用索引,这样你就不用使用 prev_ 变量了。

例如

def func(cell_matrix):                                                           
out_matrix = []
for y_pos in range(len(cell_matrix)):
out_line = []
if y_pos != 0:
for x_pos in range(len(cell_matrix[y_pos])):
out_line.append(compare_func(cell_matrix[y_pos-1][x_pos],
cell_matrix[y_pos][x_pos]))
out_matrix.append(out_line)
return out_matrix

但它可以通过使用推导式来进一步简化:

def func(cell_matrix):                                                           
return [[compare_func(
cell_matrix[y_pos-1][x_pos], cell_matrix[y_pos][x_pos])
for x_pos in range(len(cell_matrix[y_pos]))]
for y_pos in range(1, len(cell_matrix))]

编辑:顺便说一句,你得到的错误是 pyflakes 消息,代码运行良好 afaik。 (有人可能会说这是 pyflakes 无法正确解析代码)

关于python - 保持前一个项目在列表项目循环中可访问的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56497277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com