1 回答

TA貢獻(xiàn)1796條經(jīng)驗 獲得超7個贊
您的代碼沒有按照您的想法進(jìn)行操作。您傳遞給的可調(diào)用函數(shù)dropwhile
獲取元素,而不是索引。
第一次調(diào)用結(jié)果的原因是[4, 5]
:
sum(numbers[0:1]) <= 7
sum(numbers[0:2]) <= 7
sum(numbers[0:3]) <= 7
都小于或等于 7。
在第二次調(diào)用中, 和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
[]
添加回答
舉報