使用理解

时间:2015-06-30 20:27:40

标签: python list list-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

2 个答案:

答案 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)]