对于,请尝试跳过值

时间:2019-01-16 00:06:57

标签: python list for-loop try-catch

我试图遍历一个列表,执行一个简单的计算,然后根据结果追加到一个新列表中,但是我的代码正在跳过列表中的项目。具体来说,这是怎么回事。代码使用for循环遍历列表。通过从int 40中减去列表项来得出结果。然后在v列表中搜索差异。如果找到该值,则我知道第一个数字和一个差数之和为int40。然后将这两个数字存储到新列表(jlist)中,并将它们从v列表中删除。如果结果不在v列表中,则该项目将附加到另一个列表(hlist)并从v列表中删除。完成后,我希望v列表中没有数字,但jlist和hlist可以包含它们。由于以下结果所示的某种原因,首先跳过数字6,似乎转到列表的10或第二索引位置,然后将其添加到hlist中,这是正确的,因为40-10 = 30,而30不存在在v列表中。结果的最后一行是每个列表的打印。 jlist是正确的,但是hlist仅包含10。我认为hlist将包含v list中显示的其余数字。我是否忽略了一些简单的事情,或者我的逻辑存在缺陷?感谢您的任何建议。

v=[4,6,10,12,16,16,24,36]
for item in v:
        result= 40 - item
        try:
            if result in v:
                print('DIFFERENCE IS ',result)
                jlist.append([item, result])
                v.remove(item)
                v.remove(result)
                print('jlist ', jlist)
            else:
                print('ADD TO HLIST  ', item)
                hlist.append([item])
                v.remove(item)
        except ValueError:
                pass

结果:

V AT START  [4, 6, 10, 12, 16, 16, 24, 36]
DIFFERENCE IS  36
jlist  [[4, 36]]
ADD TO HLIST   10
DIFFERENCE IS  24
jlist  [[4, 36], [16, 24]]
JLIST  [[4, 36], [16, 24]]   HLIST  [[10]] V OUT  [6, 12, 16]

0 个答案:

没有答案