答案 0 :(得分:0)
似乎您在混淆列表中的索引和数字的值。
让我向您解释您的代码。我已经以一种简化的方式重写了您的代码:
代码示例1:
list1 = [1,2,3,4]
x = 0
for i, val in enumerate(list1):
if val == list1[-1]:
break
x+=val
y = 0
for j in list1[val:]:
y+=j
print('(x, y):', (x,y))
结果:
(x, y): (1, 9)
(x, y): (3, 7)
(x, y): (6, 4)
代码示例2:
list1 = [1,8,6,4]
x = 0
for i, val in enumerate(list1):
if val == list1[-1]:
break
x+=val
y = 0
for j in list1[val:]:
y+=j
print('(x, y):', (x,y))
结果:
(x, y): (1, 18)
(x, y): (9, 0)
(x, y): (15, 0)
请注意,在您的原始代码的这一部分中,您使用列表中的值而不是要使用的索引对列表进行切片:
# from original code
for j in list1[gt1:]:
y+=j
列表list1 = [1,8,6,4]
使得您可以使用超出列表中最大索引的值对列表进行切片,因此得出的总和为零。
更正此结果时,请观察结果:
# CORRECT CODE
list1 = [1,2,3,4]
x = 0
for i, val in enumerate(list1):
if val == list1[-1]:
break
x+=val
y = 0
for j in list1[i:]: #NOTICE THE CORRECTION
y+=j
print('(x, y):', (x,y))
print("\n-----------------\n")
list1 = [1,8,6,4]
x = 0
for i, val in enumerate(list1):
if val == list1[-1]:
break
x+=val
y = 0
for j in list1[i:]: #NOTICE THE CORRECTION
y+=j
print('(x, y):', (x,y))
结果:
(x, y): (1, 10)
(x, y): (3, 9)
(x, y): (6, 7)
-----------------
(x, y): (1, 19)
(x, y): (9, 18)
(x, y): (15, 10)
我希望这会有所帮助!
答案 1 :(得分:0)
用i:代替gt1:,它应该可以工作。 for j in list1[i:]: