(5)python中的一些问题

2018-11-06  本文已影响0人  顽皮的石头7788121

    Python数据类型:

        数字、布尔值、字符串、

        元组(tuple )----一般用小括号表示一系列Python数据类型按照顺序组成的序列(1,‘abc’,0.4);

        列表——列表和元组在功能上类似,但是是中括号扩起来,同时列表中的数据可改变,元组中的不可以;

        字典——hashmap,key-vaule键值对,用大括号括起来{1:’abc’,’a’:0.1},键值对中的键无具体类型要求。、

    python  生成器和迭代器

        它是一个带状态的对象,他能在你调用next()方法的时候返回容器中的下一个值,任何实现了__iter__和__next__()(python2中实现next())方法的对象都是迭代器,__iter__返回迭代器自身,__next__返回容器中的下一个值,主要是在遍历容器。

        生成器其实是一种特殊的迭代器,它不需要再像上面的类一样写__iter__()和__next__()方法了,只需要一个yiled关键字。生成器一定是迭代器(反之不成立)

例如:

def fib():

   prev, curr = 0, 1

   while True:

        yield curr

        prev, curr = curr, curr + prev

>>> f = fib()

>>> list(islice(f, 0, 10))

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

        fib就是一个普通的python函数,它特殊的地方在于函数体中没有return关键字,函数的返回值是一个生成器对象。当执行f=fib()返回的是一个生成器对象,此时函数体中的代码并不会执行,只有显示或隐示地调用next的时候才会真正执行里面的代码。

上一篇 下一篇

猜你喜欢

热点阅读