2014-11-09 235 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 2014-11-09 03:58:47

+0

可能重复是有一个标准化的方法来交换Python中的两个变量?](http://stackoverflow.com/questions/14836228/is-there-a-standardized-method-to-swap-two-variables-in-python) – 101 2014-11-09 04:05:17

+0

@MattDMo ,这不意味着他们是_sequences_。不只是元组。 – 2014-11-09 04:09:08

回答

1

这意味着交换items[j]items[j-1]

+0

我如何以更基本的方式做到这一点,我没有在我的班级中采用这种方法! – 2014-11-09 04:02:28

+1

@OmarSherief它不完全先进。它是'items [j] = items [j-1]'和'items [j-1] = items [j]'的简写,除了它可以避免使用暂时有价值的东西。 – royhowie 2014-11-09 04:03:51

+0

@royhowie对不起,我刚开始编程,我想知道如何做到这一点没有逗号。谢谢。所以我该怎么做? – 2014-11-09 04:15:52

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)。左边的一个使用序列解包取等号右边的序列元素,并将它们逐个绑定到左边的名称。因此,整体操作是交换绑定到ab的对象。

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) 
相关问题