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
[]
添加回答
舉報