【发布时间】:2018-11-07 03:21:25
【问题描述】:
最终,我想使用 reduce 并找到一个产品。我知道如何使用 for 循环来解决这个问题,但我知道列表推导更快,而且通常更“pythonic”,所以我正在尽最大努力理解如何在列表推导中进行我想要的移动。
下面是一个例子:
grid = [[a, b, c, d]
[e, f, g, h]
[i, j, k, l]
[m, n, o, p]
[q, r, s, t]] # All the sublists are integer lists.
所以最终我想做的是reduce()这些子列表的一些元素,以对角线方式选择它们。所以假设对于这个例子,我想通过一条长度为 3 的右下角对角线。如果我从 [0][0] 开始,我的列表理解将通过[a, f, k] 工作。这是我到目前为止尝试过的一些代码:
diag_len = 3
i = 0
j = 0
# Purposely omitting the reduce() part of this next line
desired_list = grid[i:i + diag_len][j:j + diag_len]
照原样,上面的代码采用grid 中索引0、1 和2 的整个子列表,而不仅仅是所需对角线中的三个元素。 for 相当于我想要的,我当前的解决方案,如下所示:
for z in range(diag_len):
desired_list.append(num_grid[i + z][j + z])
desired_product *= desired_list[z]
我查看了关于 SO 的类似标签的问题,但找不到使用列表理解同时跨越两个索引的人,如果我错过了,请道歉。
【问题讨论】:
标签: python python-3.x list list-comprehension