我试图遍历一个列表,执行一个简单的计算,然后根据结果追加到一个新列表中,但是我的代码正在跳过列表中的项目。具体来说,这是怎么回事。代码使用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]