Iterator In python, the iterator protocol is to implement the __iter() method and next() method of the object, where the former returns the object itself , which returns the next element of the container. Objects that implement these two methods are iterable objects. Iterators are lazy and are only generated when used, which provides benefits for processing large amounts of data, unlike writing all data to memory at once. Below I wrote an iterator myself. You can see that you can use a for loop to process the iterator you wrote. For objects that implement the iterator protocol, you can use any iterator tool similar to a for loop. However, looking at the output below, the second output is empty. Why is this? When we use a list, we can output the same object multiple times. What is the difference between this and an object that implements its own iterator protocol?
class it(object):def __init__(self, n):
self.a = 0self.n = n
def __iter__(self):
<br/>return self
def next(self):
if self.a self.a += 1
return self.a
else:
raise StopIteration
i=it(5)
for j in i:
print j,
print ''
print '------'
for j in i:
print j
# 1 2 3 4 5
# ------
After studying, I learned that list and other types of iterators return an iterator object, not an iterator object. itself. Then I wrote the following code for testing. As you can see from the printout, objects like TestIt can be used repeatedly. So there is another question. Is an object that does not implement the next() method still an iterator object? This is because when using the it class, an iterator object is returned, and the iteration function is implemented using the it iterator, which is equivalent to implementing the iterator protocol. The iterator protocol is very useful in python. There is a module itertools in python about iterators. Now I will learn about the itertools module and see what surprises there are!
class TestIt(object): def __init__(self, a): self.a = a def __iter__(self): return it(self.a)itertools
Infinite iterator
1 count(), accepts two parameters, the first The first is the starting number, the second is the stride, starting from 0 by default, the usage is as follows
import itertools as it
c = it.count(10, 2)
for i in c:
if i > 20:
break
print i,
# 10 12 14 16 18 20
c = it.cycle([1, 2, 3])
i = 1
for j in c:
if i > 7:
break
print j,
i += 1
for j in it.repeat([1, 2, 3], 4):
print j
1 chain(), accepts multiple iterator objects as parameters and connects them Up chain('abc', [1, 2, 3])
2 compress(data, selectors), filter the previous parameters according to the latter parameters, both parameters need to be Iterator object
3
dropwhile(pre, iterable), the pre parameter is a function, When pre(i) is True, return this item and all following items
#4 groupby(iterable[, keyfunc]), where ##iterable is an iterable object, keyfunc is a grouping function, used to The consecutive items in iterable are grouped. If not specified, the consecutive identical items in iterable are grouped by default and an iterator of (key, sub-iterator) is returned. 5 ifilter(function or None, sequence),将 iterable 中 function(item) 为 True 的元素组成一个迭代器返回,如果 function 是 None,则返回 iterable 中所有计算为 True 的项 6 tee(iterable [,n]), 组合生成器 1 permutations(iterable[, r]),用于生成一个排列,r是生成排列的元素长度,不指定则为默认长度 2 combinations(iterable, r), 求序列的组合,其中,r 指定生成组合的元素的长度,是必需的参数 3 combinations_with_replacement(iterable, r),生成的组合包含自身元素 更多python迭代器以及itertools模块相关文章请关注PHP中文网!tee
用于从 iterable 创建 n 个独立的迭代器,以元组的形式返回,n 的默认值是 2。 for j in it.tee('abc', 4):
print list(j)
list(it.permutations( list(it.permutations(, 2
print list(it.combinations_with_replacement('abc', 2))
# [('a', 'a'), ('a', 'b'), ('a', 'c'), ('b', 'b'), ('b', 'c'), ('c', 'c')]

Pythonusesahybridapproach,combiningcompilationtobytecodeandinterpretation.1)Codeiscompiledtoplatform-independentbytecode.2)BytecodeisinterpretedbythePythonVirtualMachine,enhancingefficiencyandportability.

ThekeydifferencesbetweenPython's"for"and"while"loopsare:1)"For"loopsareidealforiteratingoversequencesorknowniterations,while2)"while"loopsarebetterforcontinuinguntilaconditionismetwithoutpredefinediterations.Un

In Python, you can connect lists and manage duplicate elements through a variety of methods: 1) Use operators or extend() to retain all duplicate elements; 2) Convert to sets and then return to lists to remove all duplicate elements, but the original order will be lost; 3) Use loops or list comprehensions to combine sets to remove duplicate elements and maintain the original order.

ThefastestmethodforlistconcatenationinPythondependsonlistsize:1)Forsmalllists,the operatorisefficient.2)Forlargerlists,list.extend()orlistcomprehensionisfaster,withextend()beingmorememory-efficientbymodifyinglistsin-place.

ToinsertelementsintoaPythonlist,useappend()toaddtotheend,insert()foraspecificposition,andextend()formultipleelements.1)Useappend()foraddingsingleitemstotheend.2)Useinsert()toaddataspecificindex,thoughit'sslowerforlargelists.3)Useextend()toaddmultiple

Pythonlistsareimplementedasdynamicarrays,notlinkedlists.1)Theyarestoredincontiguousmemoryblocks,whichmayrequirereallocationwhenappendingitems,impactingperformance.2)Linkedlistswouldofferefficientinsertions/deletionsbutslowerindexedaccess,leadingPytho

Pythonoffersfourmainmethodstoremoveelementsfromalist:1)remove(value)removesthefirstoccurrenceofavalue,2)pop(index)removesandreturnsanelementataspecifiedindex,3)delstatementremoveselementsbyindexorslice,and4)clear()removesallitemsfromthelist.Eachmetho

Toresolvea"Permissiondenied"errorwhenrunningascript,followthesesteps:1)Checkandadjustthescript'spermissionsusingchmod xmyscript.shtomakeitexecutable.2)Ensurethescriptislocatedinadirectorywhereyouhavewritepermissions,suchasyourhomedirectory.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

SublimeText3 English version
Recommended: Win version, supports code prompts!

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool
