在蟒蛇的結果,分配列表操作VAR
我怎麼可以做這樣的事情
a = ["pera", "uva", "maca", "saladamista"]
b = a.reverse()
,但沒有反向列表分配給a
?
在蟒蛇的結果,分配列表操作VAR
我怎麼可以做這樣的事情
a = ["pera", "uva", "maca", "saladamista"]
b = a.reverse()
,但沒有反向列表分配給a
?
先複製列表,然後反轉副本:
a = ["pera", "uva", "maca", "saladamista"]
b = a[:]
b.reverse()
或使用 「火星笑臉」:
b = a[::-1]
編輯:如果有人願意時機,在這裏他們是:
In [1]: a = range(100000)
In [2]: %timeit b = a[:]; b.reverse()
1000 loops, best of 3: 436 us per loop
In [3]: %timeit b = a[::-1]
1000 loops, best of 3: 414 us per loop
In [4]: %timeit b = list(reversed(a))
1000 loops, best of 3: 823 us per loop
這個「火星笑臉」是如何工作的?你有這個概念的鏈接嗎?謝謝你的答案。我正在尋找簡單的方法來做到這一點..蟒蛇程序員更喜歡和最可讀的方式。 – Pabluez
@Pabluez:看看[這個答案由Alex Martelli](http://stackoverflow.com/questions/3705670/best-way-to-create-a-reversed-list-in-python)。 –
+1火星笑臉快了許多。 :: - 1 –
試試這個:
b = list(reversed(a))
如果你想把'b'作爲一個列表,應該是'list(reversed(a))'。 –
@SvenMarnach:好的 - 我只注意到了:) –
'b = a [:]; b.reverse()' – sinan
這段代碼不會「將反向列表賦值給」,它會調用列表的「reverse」方法,它會改變與列表對象「a」相同的列表對象。 [混淆變量和對象](http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#other-languages-have-variables)很容易但有害。 – delnan
不,因爲使用[:],b是一個**的**副本**,而不是**參考**,所以您在調用b的相反值之後,使其值與a相同。 – bigblind