Python3基础之(六)循环

版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/PoGeN1/article/details/84069594

在上一讲中我们学习了 while 语句进行循环控制,接下来我们将要学习另一种循环语句 for

一、基本使用

不同编程语言都有 for 语言,比如 C# 语言中的 foreach, Java 语言中的 for,在 Python 中的基本使用方法如下。

for item in sequence:
	expressions

sequence 为可迭代的对象,item 为序列中的每个对象。

二、实例

>>> example_list=[1,2,3,4,5,6,7,8,9,10]
	      
>>> for i in example_list:
	      print(i)

1
2
3
4
5
6
7
8
9
10

内容依次为 example_list 中的每一个元素 注意 Python 是使用缩进表示程序的结构,如果程序这样编写,

example_list=[1,2,3,4,5,6,7,8,9,10]
for i in example_list:
    print(i)
    print('inner of for')
print('outer of for')

输出:

1
inner of for
2
inner of for
3
inner of for
4
inner of for
5
inner of for
6
inner of for
7
inner of for
8
inner of for
9
inner of for
10
inner of for
outer of for

那么每次循环都会输出 inner of for,在循环结束后,输出 outer of for 一次。

三、进阶

range使用
在 Python 内置了工厂函数range 函数将会返回一个序列,总共有三种使用方法

1、 range(start, stop)

其中 start 将会是序列的起始值,stop为结束值,但是不包括该值,类似 数学中的表达 [start, stop),左边为闭区间,右边为开区间。

    for i in range(1, 10):
        print(i)

上述表达将会返回 1-9 所有整数,但不包含 10

2、 range(stop)

如果省略了 start 那么将从 0 开始,相当于 range(0, stop)

3、 range(start, stop, step)

step 代表的为步长,即相隔的两个值得差值。从 start 开始,依次增加 step 的值,直至等于或者大于 stop

for i in range(0,13, 5):
    print(i)

将会输出 0, 5, 10。

四、高级主题

4.1 内置集合

Python 共内置了 listtupledictset 四种基本集合,每个 集合对象都能够迭代。

tuple 类型

>>> tup=('python',24,38)
	      
>>> for i in tup:
	      print(i)

python
24
38

dictionary 类型

>>> dic={}
	      
>>> dic['lan']='python'
	      
>>> dic['version']=2.7
	      
>>> dic['platform']=64
	      
>>> for key in dic:
	      print(key,dic[key])

	      
lan python
version 2.7
platform 64

字典在迭代的过程 中将key 作为可迭代的对象返回。注意字典中key 是乱序的,也就是说和插入 的顺序是不一致的。如果想要使用顺序一致的字典,请使用 collections 模块 中的 OrderedDict对象。
set 类型

>>> s=set(['python','python2','python3','python'])
	      
>>> for i in s:
	      print(i)

	      
python3
python
python2

set 集合将会去除重复项,注意输出的 结果也不是按照输入的顺序

4.2 迭代器

:关于迭代器和生成器的更加详细的讲解请参考:python 迭代器与生成器
Python 中的 for 句法实际上实现了设计模式中的迭代器模式 ,所以我们自己也可以按照迭代器的要求自己生成迭代器对象,以便在 for 语句中使用。 只要类中实现了 __iter__next 函数,那么对象就可以在 for 语句中使用。 现在创建 Fibonacci 迭代器对象

class Fib(object):
    def __init__(self, max):
        self.max = max
        self.n, self.a, self.b = 0, 0, 1

    def __iter__(self):
        return self

    def __next__(self):
        if self.n < self.max:
            r = self.b
            self.a, self.b = self.b, self.a + self.b
            self.n = self.n + 1
            return r
        raise StopIteration()

# using Fib object
for i in Fib(5):
    print(i)

将会输出前 5 个 Fibonacci 数据 1,1, 2, 3, 5

4.3 生成器

除了使用迭代器以外,Python 使用 yield 关键字也能实现类似迭代的效果,yield 语句每次 执行时,立即返回结果给上层调用者,而当前的状态仍然保留,以便迭代器下一次循环调用。这样做的 好处是在于节约硬件资源,在需要的时候才会执行,并且每次只执行一次。

def fib(max):
    a, b = 0, 1
    while max:
        r = b
        a, b = b, a+b
        max -= 1
        yield r

# using generator
for i in fib(5):
    print(i)

将会输出前 5 个 Fibonacci 数据 1,1, 2, 3, 5

猜你喜欢

转载自blog.csdn.net/PoGeN1/article/details/84069594
今日推荐