2014-11-09 4 views
0

Я хотел бы знать, что запятые означают в строке 5Что означают запятые в утверждении типа: a, b = b, a?

def insertion_sort(items): 
    for i in range(1, len(items)): 
     j = i 
     while j > 0 and items[j] < items[j-1]: 
      items[j], items[j-1] = items[j-1], items[j] 
      j -= 1 
+4

это означает, что они [кортежи] (https://docs.python.org/2/tutorial/datastructures.html#tuples-and-sequences) – MattDMo

+0

возможно дубликат [Is существует стандартизованный метод для замены двух переменных в Python?] (http://stackoverflow.com/questions/14836228/is-there-a-standardized-method-to-swap-two-variables-in-python) – 101

+0

@MattDMo , а не означает, что они _sequences_. Не только кортежи. –

ответ

1

это означает, что обмен items[j] и items[j-1]

+0

Как я могу сделать это более простым способом, я еще не принял этот метод в своем классе! –

+1

@OmarSherief Это не совсем продвинутый. Это сокращенно для 'items [j] = items [j-1]' и 'items [j-1] = items [j]', за исключением того, что позволяет избежать использования временной ценной бумаги. – royhowie

+0

@royhowie Извините, я только начал программировать, и я хочу знать, как это сделать без запятых. Спасибо. И что же мне делать? –

0

его, как это,

>>> a, b = 2, 10 
>>> temp = a 
>>> a = b 
>>> b = temp 
>>> a 
10 
>>> b 
2 

В вас так,

items[j], items[j-1] = items[j-1], items[j] 

это будет Процесс, как: -

temp = items[j] 
item[j] = items[j-1j 
items[j-1] = temp 
1

Запятая на праве генерирует кортеж (b, a). Один слева использует последовательность распаковки, чтобы взять элементы последовательности справа от знака равенства и связать их один за другим с именами слева. Следовательно, общая операция заключается в замене объектов, связанных с a и b.

more info

0

Это использование присвоить значение items[j]=items[j-1] и items[j-1] = items[j] в одной строке вы можете написать как items[j], items[j-1] = items[j-1], items[j] обмен на это значение пункта здесь как swap.

пример:

  >>> a,b=10,20 
      >>> a 
      10 
      >>> b 
      20 
     >>> a,b 
     (10, 20) 
Смежные вопросы