python生成器切片的實現
(推薦操作系統:windows7系統、Python3.9.1、DELLG3電腦。)
1、想得到一個由迭代器生成的切片對象,但是標準切片操作并不能做到。函數itertools.islice()正好適用于在迭代器和生成器上做切片操作。比如:
>>>defcount(n):
...whileTrue:
...yieldn
...n+=1
...
>>>c=count(0)
>>>c[10:20]
Traceback(mostrecentcalllast):
File"",line1,in
TypeError:'generator'objectisnotsubscriptable
>>>#Nowusingislice()
>>>importitertools
>>>forxinitertools.islice(c,10,20):
...print(x)
...
10
11
12
13
14
15
16
17
18
19
>>>
2、迭代器和生成器不能使用標準的切片操作,因為它們的長度事先我們并不知道(并且也沒有實現索引)。函數islice()返回一個可以生成指定元素的迭代器,它通過遍歷并丟棄直到切片開始索引位置的所有元素。然后才開始一個個的返回元素,并直到切片結束索引位置。
這里要著重強調的一點是islice()會消耗掉傳入的迭代器中的數據。必須考慮到迭代器是不可逆的這個事實。所以如果你需要之后再次訪問這個迭代器的話,那你就得先將它里面的數據放入一個列表中。
以上就是python生成器切片的實現,希望能對大家有所幫助。更多Python學習教程請關注IT培訓機構:千鋒教育。