2012-02-20 119 views
0

如何使用下面的代碼獲得反向迭代。我應該使用reduce函數嗎?從最後一個元素開始獲取數組的索引

實施例:

for i in range(4): 
    print i ////0 1 2 3 

如何打印相同的以相反的順序

3 2 1 0 

a=[5,2,1,4,3] 

我也想使用索引而不是a[::-1] 即打印與上述相反的陣列,我想先打印

a[4] //get index starting from last how to achieve this 
a[3] 
a[2] 
a[1] 
a[0] 
+0

範圍(4,0,-1)'創建一個反向範圍。不過,不明白你的尷尬的第二部分。 – kirilloid 2012-02-20 09:57:47

+0

@kirilloid'範圍(4,0,-1)'不是'反轉(範圍(4))' – eumiro 2012-02-20 09:59:35

+1

是的,它應該是'range(3,-1,-1)',而用'reversed'更好的 – kirilloid 2012-02-20 10:04:24

回答

5

使用reversed功能:

for i in reversed(range(4)): 
    print i 

打印:

3 
2 
1 
0 

a=[5,2,1,4,3] 
for i in reversed(a): 
    print i 

打印

3 
4 
1 
2 
5 
0

您可以使用反轉功能的名單。

>>> a = [1,2,3,4] 
>>> a.reverse() 
>>> a 
[4, 3, 2, 1] 

使用eumiro的答案一次反向(即如果你只需要它一次)。 否則使用我的方法,因爲轉換是在列表本身完成的。

1

一種方法涉及在迭代之前顛倒列表。雖然這種技術廢物計算機週期,存儲器,和代碼行:

rseqn = list(seqn) 
rseqn.reverse() 
for value in rseqn: 
    print value 
+0

或只是'rseqn = seqn [:: - 1]' – 2012-02-20 10:50:45

0

這工作:

range(4, -1, -1) 
// [4, 3, 2, 1, 0] 
0
>>> for i in reversed(range(4)): 
... print(i) 
... 
3 
2 
1 
0 
0

len()返回一個列表的長度。因此,您可以使用len(a)-1獲取列表a的最後一個索引。

相關問題