使用理解反向采样嵌套列表
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]
抱歉,如果这是重复的。如果我有列表列表:
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]