Python grammar practice_iterator 2

Python grammar practice

Note: If you think the blog is good, don’t forget to like and collect it. I will update the content related to artificial intelligence and big data every week. Most of the content is original, Python Java Scala SQL code, CV NLP recommendation system, etc., Spark Flink Kafka, Hbase, Hive, Flume, etc. are all pure dry goods, and the interpretation of various top conference papers makes progress together.
Today I will continue to share with you some Python grammar exercises_Iterator 2
#博学谷IT学报技术支持



foreword

Iterator Case 2_Custom range function


1. Iterator case

Through this iterator case, familiarize yourself with the use of iterators

class MyRange(object):
    def __init__(self, num):
        self.num = num

    def __iter__(self):
        return MyRangeIter(self.num)


class MyRangeIter(object):
    def __init__(self, stop_num):
        self.stop_num = stop_num
        self.index = 0

    def __next__(self):
        if self.index == self.stop_num:
            raise StopIteration
        temp = self.index
        self.index += 1
        return temp


if __name__ == '__main__':
    for i in MyRange(10):
        print(i)

insert image description here

2. Iterator yield method change

class MyRange(object):
    def __init__(self, num):
        self.num = num

    def __iter__(self):
        number = 0
        while number < self.num:
            yield number
            number += 1


if __name__ == '__main__':
    for i in MyRange(10):
        print(i)

3. Generator

generator = iterator + iterable

# 生成器原理
# class MyGenerator(object):
# 
#     def __init__(self, stop_value):
#         self.stop_value = stop_value
#         self.begin = 0
# 
#     def __iter__(self):
#         return self
# 
#     def __next__(self):
#         temp = self.begin
#         if temp >= self.stop_value:
#             raise StopIteration
#         self.begin += 1
#         return temp

# 定义一个生成器
def my_range(stop_value):
    number = 0
    while number < stop_value:
        yield number
        number += 1


if __name__ == '__main__':
    my01 = my_range(10)

    for i in my01:
        print(i)


Summarize

Iterator Exercise 2: Implementing the range function through iterators

Guess you like

Origin blog.csdn.net/weixin_53280379/article/details/128907837