1 回答
TA贡献1796条经验 获得超7个赞
您的代码没有按照您的想法进行操作。您传递给的可调用函数dropwhile
获取元素,而不是索引。
第一次调用结果的原因是[4, 5]
:
sum(numbers[0:1]) <= 7
sum(numbers[0:2]) <= 7
sum(numbers[0:3]) <= 7
都小于或等于 7。
在第二次调用中, 和numbers[0:4]
都是numbers[0:5]
整个列表,其总和始终为 9。
您可以dropwhile
通过枚举来代替:
>>> numbers = [1, 2, 3, 4, 5]
>>> numbers = [element for i, element in itertools.dropwhile(lambda x: sum(numbers[0:x[0]+1]) <= 7, enumerate(numbers))]
>>> numbers
[4, 5]
>>> numbers = [element for i, element in itertools.dropwhile(lambda x: sum(numbers[0:x[0]+1]) <= 7, enumerate(numbers))]
>>> numbers
[5]
>>> numbers = [element for i, element in itertools.dropwhile(lambda x: sum(numbers[0:x[0]+1]) <= 7, enumerate(numbers))]
>>> numbers
[]
添加回答
举报