2014-10-23 3 views
0

Привет У меня есть вопрос о инструкции if int for for j loop. Я понимаю, что вы меняете меньшее значение с большей стоимостью, но я не понимаю, почему он написан как waarde, rij[j] = rij[j], waarde. является ли запятая какой-то swapper в Python?Вставка сортировки уточнения Python

def insertionsort(rij):    
    for i in range(len(rij)):   
     waarde = rij[i]    
     for j in range(0, i):   
      if waarde<rij[j]:   
       waarde, rij[j] = rij[j], waarde 
     rij[i] = waarde    
+0

@Stefano Вы избили меня до него. Я форматировал, когда увидел результат. :) –

ответ

1

В Python

a, b = b, a 

эффективно обменивает значения от a и b. Точнее, имя a теперь будет ссылаться на значение, которое ранее ссылалось на b и наоборот.

Это называется упаковкой/распаковкой кортежа. В запятой строятся кортежи; то обмен производится =.

Что происходит «за кулисами», заключается в следующем:

  • Кортеж b, a оценивается. Вы можете представить, что результат этой оценки хранится в неназванной временной переменной. Назовем эту переменную temp.
  • Оператор присваивания = теперь приводит к присвоению имен temp именам, расположенным слева от =. Если бы было только одно имя слева, как в x = b, a, то x был бы назначен кортеж b, a.
  • Поскольку с левой стороны расположено несколько имен, temp будет «распакован» в эти имена в последовательности.
  • a будет присвоено значение temp[0] (который содержит значение, которое b указал на), и b будет присвоено значение temp[1].

Обратите внимание, что количество имен с обеих сторон должны совпадать:

>>> a = 1 
>>> b = 2 
>>> c = 3 
>>> a, b = c, b, a 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: too many values to unpack (expected 2) 

Но вы можете использовать оператор кортеж УПАКОВКИ * сказать Python, чтобы упаковать оставшиеся значения в одно имя:

>>> a, *b = c, b, a 
>>> a 
3 
>>> b 
[2, 1] 
0

В Python вы можете назначить несколько varialbes так:

a, b = "A", "B" 

Это говорит: присвойте первое значение справа от = первому имени слева от = и назначьте второе значение справа от = ко второму имени слева от =.

Вы также можете сделать это с тремя или более переменными:

a, b, c, d = "A", "B", "C", "D" 

Вы можете использовать эту функцию, чтобы поменять местами значения переменных:

a, b = b, a 

Теперь, когда вы печатаете a вы получите «B », и когда вы печатаете b, вы получаете« A ».

Смежные вопросы