在解釋,Python a = a.reverse使列表爲空?
a = [1,2,3,4]
a = a.reverse()
接下來,當我在解釋器中鍵入,我什麼也沒得到。所以它似乎a = a.reverse()生成一個空列表。這是設計嗎?
我在Windows XP上使用python 2.5。
在解釋,Python a = a.reverse使列表爲空?
a = [1,2,3,4]
a = a.reverse()
接下來,當我在解釋器中鍵入,我什麼也沒得到。所以它似乎a = a.reverse()生成一個空列表。這是設計嗎?
我在Windows XP上使用python 2.5。
list.reverse()就地修改列表,返回None。但是如果你想保護舊列表,你可以使用reverse()函數,它會返回一個迭代器。這裏
In [1]: a=[1,2,3,4]
In [2]: print(a.reverse())
None
In [3]: a
Out[3]: [4, 3, 2, 1]
In [4]: a=[1,2,3,4]
In [5]: print(reversed(a))
<listreverseiterator object at 0x24e7e50>
In [6]: list(reversed(a))
Out[6]: [4, 3, 2, 1]
In [7]: a
Out[7]: [1, 2, 3, 4]
list
是一個可變類型,因此list
操作就地並返回None
。
reverse
就地更改列表,並且不返回任何內容。因此,這是預期的用法:
a = [1, 2, 3, 4]
a.reverse()
a # => [4, 3, 2, 1]
如果分配的reverse
結果回a
,將覆蓋所有與無意義的返回值(None
),這是你的錯誤來自於努力工作。
python列表的內置方法reverse
不返回反轉列表。
它顛倒了原有的列表。
所以,如果你想扭轉你的列表,就像在你的代碼,只是做:
a = [1,2,3,4]
a.reverse()
我想你想要做的是:
a = [1,2,3,4]
a.reverse()
a
是一個對象,操作就是處理它的數據,所以你不需要再分配它。
反向方法會'取回'(如排序)並返回None,因此在調用a.reverse()
a
已包含結果之後。
list.reverse()
只是不返回任何東西,因爲它就地改變了列表。看到這個例子:
>>> a = [1,2,3,4]
>>> a.reverse()
>>> a
[4, 3, 2, 1]
還有就是reversed
功能(實際上是一個類型,但此處無關緊要),不改變就地列表,而是返回一個迭代器列表中的項目相反的順序。嘗試:
>>> a = [1,2,3,4]
>>> a = list(reversed(a))
>>> a
[4, 3, 2, 1]
文檔:http://docs.python.org/tutorial/datastructures.html#more-on-lists這裏:http://docs.python.org/library/stdtypes.html#mutable - 次序類型 – 2011-04-28 10:24:52