關於如何在Python中做到這一點的任何建議?Pythonic的方式來有條件地分配變量
if x():
a = 20
b = 10
else:
a = 10
b = 20
我可以按照以下交換他們,但它不是明確的(也不是很Python的IMO)
a = 10
b = 20
if x():
[a, b] = [b, a]
關於如何在Python中做到這一點的任何建議?Pythonic的方式來有條件地分配變量
if x():
a = 20
b = 10
else:
a = 10
b = 20
我可以按照以下交換他們,但它不是明確的(也不是很Python的IMO)
a = 10
b = 20
if x():
[a, b] = [b, a]
(a,b) = (20,10) if x() else (10,20)
請注意,如果您使用元組而不是列表,這可能會更有效,因爲元組是不可變的,他們可以通過解釋器來實現。 – mgilson 2013-03-19 21:24:46
@mgilson:趕上! – 2013-03-19 21:25:09
與a, b = b, a
交換值,可以認爲idiomatic in Python。
a, b = 10, 20
if x(): a, b = b, a
一個好處是關於這就是你不要重複10
和20
,所以這是一個有點DRY-er。
雖然你正在重複*任務*,所以這是一個清洗。 – chepner 2013-03-19 22:28:06
或者我可以做[a,b] = [20,10] ... [a,b] = [10,20]。不知道它好多了 – Lem0n 2013-03-19 21:22:27
作爲一個方面說明:你不需要(也可能不需要)方括號。您可以像列表一樣輕鬆地交換元組:a,b = b,a'。它更具可讀性,更具慣用性,甚至更快。 – abarnert 2013-03-19 21:25:04