2014-11-01 183 views
0

我有一个for循环,我在这里,它使用bubblesort排序字符串的列表,并在每次迭代列表有点改变...有没有办法比较前一次迭代与当前迭代的乘积?Python:for循环比较当前与以前的迭代

因为它只是打印每个迭代的产品。我需要一种方法来回拨先前的产品,后者将其与上一次迭代的产品进行比较。

lst = ["bubble", "bath", "with", "bacon"] 

def bubble(lst): 
    unsorted = True 
    while unsorted: 
     unsorted = False    
     for j in range(len(lst) - 1): 
      if lst[j] > lst[j + 1]: 
       hold = lst[j + 1] 
       lst[j + 1] = lst[j] 
       lst[j] = hold 
       print(lst) 
       unsorted = True 

感谢一帮家伙!

+1

只需在for循环前添加'backup = lst [:]'',您就可以轻松保存前一个列表的副本,但是您的意思是“比较”是什么意思?简单的平等比较? – 2014-11-01 20:02:43

+0

确实是一个简单的平等比较,后来,如果他们不一样,操纵他们,但我得到了覆盖。谢谢:) – user3256536 2014-11-01 20:11:13

+0

Python不需要一个临时变量来交换两个项目:'lst [j],lst [j + 1] = lst [j + 1],lst [j]'。 – chepner 2014-11-01 20:48:10

回答

2

您可以在每次迭代后使用[:]创建列表的副本。尽管此代码:

a = [1, 2, 3] 
b = a 

...只需在b存储到同一个列表的引用,此代码:

a = [1, 2, 3] 
b = a[:] 

...在b创建的a并将其存储的完整拷贝。因此,对a的任何后续更改都不会影响b