首页 > 解决方案 > Python嵌套for循环结果的问题

问题描述

我将非常感谢以下 python 代码的帮助,这已经困扰我一个多星期了:谁能解释原因:

a) 代码不会从名为 startt1 的列表中删除元素 #2 并将其附加到 newlist1。然而,它正在删除和附加元素#1 和#4。跳过/忽略元素 #2 的合理原因是什么。

b) 如果代码运行一次,则列表 start1 = [2, 3, 5]。现在,如果使用这个修改后的 start1 列表再次运行代码,元素 #2 现在将被删除,留下 start1 = [3, 5],这是上面 a) 中应该做的。

请注意,保持列表中变量的顺序很重要。另外,我不想使用 sets() 因为在代码重复的实现中很重要。

start1 = [1,2,3,4,5]
finish1 = [6,4,7,2,1,'w']
newlist1 = []
x=0
y=0

for starts in start1:
    x+=1
    for finishs in finish1:
        y+=1
        if starts == finishs:
            print (starts, finishs, sep=' = ') 
            newlist1.append(starts)
            start1.remove(starts)
print(start1)
print(newlist1)

我想我已经知道的解决方案:i)一个简单的列表理解将解决问题(ii)一个使用 NOT 或 NOT IN 的简单 for 循环也可以工作。

但是,这些解决方案不是我正在寻找的,因为代码正在检查变量(员工)名称列表中一年的期末余额是否等于下一年的期初余额。我希望这很清楚,并且非常感谢您的帮助。

标签: pythonloopsnested

解决方案


您的问题似乎是您正在从列表中删除当前正在重复的值。这是我的代码的固定版本。

start1 = [1,2,3,4,5]
start1Copy=start1.copy()
finish1 = [6,4,7,2,1,'w']
newlist1 = []
x=0
y=0

for starts in start1Copy:
    x+=1
    for finishs in finish1:
        y+=1
        if starts == finishs:
            print (starts, finishs, sep=' = ')
            newlist1.append(starts)
            start1.remove(starts)
print(start1)
print(newlist1)

推荐阅读