[Zadanie rekrutacyjne 1] Zamiana wartości dwóch zmiennych

Data publikacji: 2016-03-08 | Tagi:

Jak zamienić dwie zmienne w pythonie? Pytanie niby proste, ale nie do końca, po tym jaka jest odpowiedź, można określić stopień znajomości języka :)

Określmy zadanie: Mamy dwie zmienne x oraz y, których zawartość chcemy zamienić. W x ma być to co w y, a w y to co w x.

Pierwszy pomysł, to użycie zmiennej tymczasowej.

In [1]: x = 1; y = 2

In [2]: z = x

In [3]: x = y

In [4]: y = z

In [5]: x, y
Out[5]: (2, 1)

Pomysł poprawny w działaniu, ale trzeba się sporo napisać, no i nie wygląda to najlepiej w oczach osób, które znają trochę pythona.

Pomysł numer dwa - wygrzebałem gdzieś w odmętach internetów. Trąci jakimś asemblerowym zacięciem, ale o dziwo działa. Oparty na metodzie XOR.

In [1]: x = 1; y = 2

In [2]: x = x ^ y

In [3]: y = y ^ x

In [4]: x = x ^ y

In [5]: x, y
Out[5]: (2, 1)

Trzeci pomysł - wg mnie najbardziej pytoniczny, to rozpakowywanie tupli.

In [1]: x = 1; y = 2

In [2]: x, y = y, x

In [3]: x, y 
Out[3]: (2, 1)

Działa to mniej więcej tak, że python ewaluuje prawą część wyrażenia, czego wynikiem jest tupla. Następnie rozpakowywuje ją do dwóch zmiennych. Ot i cała pythoniczna magia :).

Według mnie trzeci sposób świadczy o najlepszej znajomości pythona i stosowaniu najprostszych metod w kontekście znajomości pythona, drugi o znajomości trików i obejść programistycznych, pierwszy o stosowaniu najprostszych możliwych metod w ogóle.


Oceń ten post:
Podziel się:

comments powered by Disqus

IT w obrazkach: