【问题标题】:Python: For loop comparing current with previous iterationPython:For循环比较当前与前一次迭代
【发布时间】:2014-11-01 19:57:02
【问题描述】:

我在这里有一个 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

谢谢大家!

【问题讨论】:

  • 您只需在 for 循环前添加 backup=lst[:] 即可轻松保存前一个列表的副本,但是“比较”是什么意思?简单的平等比较?
  • 确实是对相等性的简单比较,然后,如果它们不相同,则对其进行操作,但我已经掌握了。谢谢你:)
  • Python 不需要临时变量来交换两个项目:lst[j], lst[j+1] = lst[j+1], lst[j].

标签: python list for-loop compare iteration


【解决方案1】:

您可以在每次迭代后使用[:] 创建列表的副本。而这段代码:

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

...只是在b 中存储对同一列表的引用,此代码:

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

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

【讨论】:

    猜你喜欢
    • 2020-08-12
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多