很抱歉,如果这是重复的话。如果我有一份清单清单:
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
答案 0 :(得分:3)
这与您尝试过的非常相似。您对-k
有正确的想法,但必须从长度中减去它(以及另一个-1
,因为python索引从0
开始。)
print [j1[k][len(j0) - 1 - k] for k in range(0,4)]
[3, 2, 1, 0]
答案 1 :(得分:1)
你可以尝试
print [j1[k][k] for k in range(3, -1, -1)]