1 回答
TA貢獻1796條經驗 獲得超7個贊
您的代碼沒有按照您的想法進行操作。您傳遞給的可調用函數dropwhile獲取元素,而不是索引。
第一次調用結果的原因是[4, 5]:
sum(numbers[0:1]) <= 7sum(numbers[0:2]) <= 7sum(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
[]
添加回答
舉報
