2014-10-18 50 views
3

從官方文檔:爲什麼deque.extendleft()顛倒元素的順序?

extendleft(迭代器)

Extend the left side of the deque by appending elements from iterable. Note, the 
    series of left appends results in reversing the order of elements in the iterable argument. 

這背後有什麼方法的行爲的原因/概念?我知道我可以很容易地使用reversed來改變它,但我只是好奇。

回答

3

假設您正在擴展[1, 2, 3, 4]。迭代將迭代,每個元素將被追加到左側。因此,過程是這樣的

閱讀的第一個元素,並把它在左端

1 

閱讀的第二個元素,並把它在左端

2 -> 1 

閱讀第三元素並將其放在左端

3 -> 2 -> 1 

讀取第四個元素並將其放在左端

4 -> 3 -> 2 -> 1 

查看,元素的順序是相反的。其實,這對我來說似乎是合乎邏輯的。當我們這樣做list.extend,這樣

[].extend([1, 2, 3, 4]) 

可迭代迭代,並添加到列表中的右端。所以,該模式也遵循extendleft