写给Python编程高手2:迭代器
python教程栏目介绍编程用到的迭代器。
相关免费学习推荐:python教程(视频)
如何实现可迭代对象和迭代器对象
迭代器模式是一种经典的软件设计模式,现在很多编程语言都内置了这种设计模式。在Python的原始数据类型中,可以进行for循环的都属于可迭代的类型。当然,也可以使用iter函数获取到相应的迭代器,然后遍历该对象。如下面的代码:
l = [1, 3] # 可迭代对象 __iter__t = iter(l) #获取迭代器对象print(t.__next__()) print(t.__next__())# print(t.__next__()) # 报异常复制代码
要实现一个可迭代对象,一般先要实现相应的迭代器对象。在Python实现迭代器,其实只需要实现__next__方法即可。但collections包中的Iterator类将__next__方法定义为了抽象方法,笔者认为鉴于程序的可读性,在实现迭代器时不妨继承Iterator类。
from random import samplefrom collections import Iterable, Iteratorclass WeatherIterator(Iterator): def __init__(self, cities): self.cities = cities self.index = 0 def getWeather(self, city): return (city, sample(['sun','wind','yu'], 1)[0]) def __next__(self): if self.index == len(self.cities): raise StopIteration city = self.cities[self.index] self.index += 1 return self.getWeather(city)复制代码
实现可迭代的对象,也只要实现__iter__方法即可,同样的,collections包中的Iterable类也将__iter__方法定义为抽象类。
from collections import Iterableclass WeatherIterable(Iterable): def __init__(self, cities): self.cities = cities self.index = 0 def __iter__(self): return WeatherIterator(self.cities)复制代码
这样就可以使用for循环进行迭代了。
for weather in WeatherIterable(['北京', '上海', '广州']): print(weather)复制代码
生成器简介
先看如下代码:
def gen(): print("step 1") yield 1 print("step 2") yield 2 print("step 3") yield 3复制代码
上面的gen函数的返回值就是一个生成器对象。
g = gen() g.__next__() print(g.__next__()) print(g.__next__())复制代码
如上述代码,每调用一次生成器的__next__方法,它都会执行一段gen函数,遇到yield关键字为止,并返回其后的东西。因此,生成器可以理解为一种能够被打断的函数。
注意:生成器对象也是可迭代的对象。
for x in g: print(x)复制代码
如何使用生成器函数实现可迭代对象
将__iter__方法实现为生成器函数,就可以实现可迭代对象。
class PrimeNumbers: def __init__(self, start, end): self.start = start self.end = end def isPrimeNum(self, k): #判断是否是素数 if k < 2: return False for i in range(2, k): if k % i == 0: return False return True def __iter__(self): for k in range(self.start, self.end + 1): if self.isPrimeNum(k): yield kfor num in PrimeNumbers(2, 100): print(num)复制代码
如何进行反向迭代以及如何实现反向迭代
iter函数可以获取到可迭代对象的正向迭代器,reversed函数则可以获取到可迭代对象的反向迭代器。
l = [1, 2, 3, 4, 5]for x in reversed(l): print(x)复制代码
要实现反向迭代,实现__reversed__方法即可。
class FloatRange: def __init__(self, start, end, step=0.1): self.start = start self.end = end self.step = step def __iter__(self): t = self.start while t <= self.end: yield t t += self.step def __reversed__(self): t = self.end while t >= self.start: yield t t -= self.stepfor x in FloatRange(1.0, 4.0, 0.5): print(x)for x in reversed(FloatRange(1.0, 4.0, 0.5)): print(x)复制代码
如何对迭代器做切片操作
itertools包中的islice函数,可以可迭代对象进行切片操作。
from itertools import islicefor x in islice(FloatRange(1.0, 4.0, 0.5), 2, 5): print(x)复制代码
如何在一个for语句中迭代多个可迭代对象
使用zip方法,将对应元素组成一个元组。
for w, e, m in zip([1, 2, 3, 4], ('a', 'b', 'c','d'), [5, 6, 7, 8]): print(w, e, m)复制代码
使用itertools包中的chain函数,将多个可迭代对象串联起来。 使用zip方法,将对应元素组成一个元组。
from itertools import chainfor x in chain([1, 2, 3, 4], ('a', 'b', 'c','d')): print(x)复制代码
Atas ialah kandungan terperinci 写给Python编程高手2:迭代器. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Cara menggunakan iterator dan algoritma rekursif untuk memproses data dalam C# memerlukan contoh kod khusus Dalam C#, iterator dan algoritma rekursif ialah dua kaedah pemprosesan data yang biasa digunakan. Iterator boleh membantu kami merentasi elemen dalam koleksi, dan algoritma rekursif boleh menangani masalah yang kompleks dengan cekap. Artikel ini memperincikan cara menggunakan iterator dan algoritma rekursif untuk memproses data dan menyediakan contoh kod khusus. Menggunakan Iterator untuk Memproses Data Dalam C#, kita boleh menggunakan iterator untuk mengulang elemen dalam koleksi tanpa mengetahui saiz koleksi terlebih dahulu. Melalui iterator, I

Cara menggunakan Python untuk menulis dan melaksanakan skrip dalam Linux Dalam sistem pengendalian Linux, kita boleh menggunakan Python untuk menulis dan melaksanakan pelbagai skrip. Python ialah bahasa pengaturcaraan ringkas dan berkuasa yang menyediakan banyak perpustakaan dan alatan untuk menjadikan skrip lebih mudah dan lebih cekap. Di bawah ini kami akan memperkenalkan langkah asas cara menggunakan Python untuk penulisan dan pelaksanaan skrip dalam Linux, dan menyediakan beberapa contoh kod khusus untuk membantu anda memahami dan menggunakannya dengan lebih baik. Pasang Python

Contoh penggunaan dan kod fungsi sqrt() dalam Python 1. Fungsi dan pengenalan fungsi sqrt() Dalam pengaturcaraan Python, fungsi sqrt() ialah fungsi dalam modul matematik, dan fungsinya adalah untuk mengira punca kuasa dua bagi nombor. Punca kuasa dua bermaksud nombor yang didarab dengan sendirinya sama dengan kuasa dua nombor itu, iaitu, x*x=n, maka x ialah punca kuasa dua bagi n. Fungsi sqrt() boleh digunakan dalam atur cara untuk mengira punca kuasa dua. 2. Cara menggunakan fungsi sqrt() dalam Python, sq

Ajar anda menggunakan pengaturcaraan Python untuk melaksanakan dok antara muka pengecaman imej Baidu dan merealisasikan fungsi pengecaman imej Dalam bidang penglihatan komputer, teknologi pengecaman imej adalah teknologi yang sangat penting. Baidu menyediakan antara muka pengecaman imej yang berkuasa yang melaluinya kami boleh melaksanakan pengelasan imej, pelabelan, pengecaman muka dan fungsi lain dengan mudah. Artikel ini akan mengajar anda cara menggunakan bahasa pengaturcaraan Python untuk melaksanakan fungsi pengecaman imej dengan menyambung ke antara muka pengecaman imej Baidu. Pertama, kita perlu membuat aplikasi pada Platform Pembangun Baidu dan mendapatkan

Cara melakukan pemprosesan dan pengecaman imej dalam Python Ringkasan: Teknologi moden telah menjadikan pemprosesan dan pengecaman imej sebagai alat penting dalam banyak bidang. Python ialah bahasa pengaturcaraan yang mudah dipelajari dan digunakan dengan pemprosesan imej yang kaya dan perpustakaan pengecaman. Artikel ini akan memperkenalkan cara menggunakan Python untuk pemprosesan dan pengecaman imej, serta memberikan contoh kod khusus. Pemprosesan imej: Pemprosesan imej ialah proses melaksanakan pelbagai operasi dan transformasi pada imej untuk meningkatkan kualiti imej, mengekstrak maklumat daripada imej, dsb. Perpustakaan PIL dalam Python (Pi

Bagaimana untuk menulis algoritma analisis komponen utama PCA dalam Python? PCA (Analisis Komponen Utama) ialah algoritma pembelajaran tanpa pengawasan yang biasa digunakan untuk mengurangkan dimensi data untuk memahami dan menganalisis data dengan lebih baik. Dalam artikel ini, kita akan belajar cara menulis algoritma analisis komponen utama PCA menggunakan Python dan memberikan contoh kod khusus. Langkah-langkah PCA adalah seperti berikut: Seragamkan data: Sifarkan min setiap ciri data dan laraskan varians kepada julat yang sama untuk memastikan

Bagaimana untuk menulis program dalam Python untuk mendapatkan jubin peta dalam API Peta Baidu? Jubin peta ialah elemen asas yang membentuk peta Dengan membahagikan peta kepada imej bebas yang kecil, anda boleh mencapai pemuatan dan paparan peta yang lebih pantas. API Peta Baidu menyediakan data jubin peta yang kaya Artikel ini akan memperkenalkan cara menggunakan Python untuk mendapatkan jubin peta dalam API Peta Baidu dan memberikan contoh kod. Mendapatkan jubin peta API Peta Baidu memerlukan menggunakan kekunci (ak) yang disediakan oleh antara muka Oleh itu, anda perlu menggunakan Peta Baidu terlebih dahulu

Pengaturcaraan Python untuk menganalisis fungsi penukaran koordinat dalam dokumentasi API Peta Baidu Pengenalan: Dengan perkembangan pesat Internet, fungsi penentududukan peta telah menjadi bahagian yang amat diperlukan dalam kehidupan orang moden. Sebagai salah satu perkhidmatan peta paling popular di China, Peta Baidu menyediakan satu siri API untuk digunakan oleh pembangun. Artikel ini akan menggunakan pengaturcaraan Python untuk menganalisis fungsi penukaran koordinat dalam dokumentasi API Peta Baidu dan memberikan contoh kod yang sepadan. 1. Pengenalan Dalam pembangunan, kita kadangkala melibatkan isu penukaran koordinat. AP Peta Baidu
