itertools.islice的文檔說:itertools islice方法和啓動參數
請返回選自可迭代元素的迭代器。如果start不爲零,則跳過迭代器中的元素直到達到起始點。之後,元素將被連續返回,除非將步驟設置爲高於導致項目被跳過的元素。
用法說:
islice('ABCDEFG', 2) --> A B
islice('ABCDEFG', 2, 4) --> C D
應該不是第一個版本返回CDEFG ...跳過前兩個元素是AB
itertools.islice的文檔說:itertools islice方法和啓動參數
請返回選自可迭代元素的迭代器。如果start不爲零,則跳過迭代器中的元素直到達到起始點。之後,元素將被連續返回,除非將步驟設置爲高於導致項目被跳過的元素。
用法說:
islice('ABCDEFG', 2) --> A B
islice('ABCDEFG', 2, 4) --> C D
應該不是第一個版本返回CDEFG ...跳過前兩個元素是AB
你誤讀。它有two call profiles:
itertools.islice(iterable, stop)
itertools.islice(iterable, start, stop[, step])
如果你只傳遞兩個參數,第二個參數是stop
說法,因爲如果你通過0
爲start
參數。爲了得到你所期望的行爲,你會怎麼做:
islice('ABCDEFG', 2, None)
但明白這是低效的大型start
值;在引擎蓋下,islice
正在迭代並放棄,直到達到期望的start
的位置,您還沒有繞過迭代工作(只是在CPython中的C層進行了優化)。
我看到現在新的python。 python很棒,但這些api文檔不如java比較好。不管怎麼說,多謝拉。 –
@BharatJain:真的嗎?它給你兩個可能的呼叫配置文件彼此相鄰,不知道它可以有多大的幫助。 Java允許函數也具有多個原型(並且比Python實現的功能要多得多),所以它不應該是新的。 – ShadowRanger
那麼它更好地爲每個API分別提供文檔,尤其是當它們的含義不同時。你不覺得每個電話配置文件都有相同的詞語會引起混淆,當他們從不明確表示參數被區別對待時 –
在第一個例子中,2是「stop」參數。看看函數簽名:https://docs.python.org/3/library/itertools.html#itertools.islice – vaultah