使用理解反向采样嵌套列表

Sampling nested lists in reverse using comprehension

抱歉,如果这是重复的。如果我有列表列表:

j0 = [i for i in range(4)]
j1 = [j0 for j in range(4)]
>>> [[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]

我可以使用列表理解依次从每个列表中获取一个元素:

print [j1[k][k] for k in range(0,4)]
>>> [0, 1, 2, 3]

但是我想要每个列表中的一个元素从末尾开始(因此向后工作),所以所需的输出是:

>>> [3, 2, 1, 0]  # One item from each list

我试过了,但显然是错误的,因为 j1[0][0] = 0:

print [j1[k][-k] for k in range(0,4)]
>>>[0, 3, 2, 1]

我可以使用以下内容,但是有更好的使用列表理解的方法吗?

nl = []
l = 0
for i in range(-1, -5, -1):
    nl.append(j1[l][i])
    l += 1
print nl

你可以试试

print [j1[k][k] for k in range(3, -1, -1)]

这与您尝试过的非常相似。您对 -k 的想法是正确的,但必须从长度中减去它(连同另一个 -1,因为 python 索引从 0 开始)。

print [j1[k][len(j0) - 1 - k] for k in range(0,4)]
[3, 2, 1, 0]