1. 程式人生 > >Python資料型別,迭代器和生成器

Python資料型別,迭代器和生成器

資料型別 :
Number(數字)
String(字串)
List(列表)
Tuple(元組)
Sets(集合)
Dictionary(字典)

字串
1.1、如何在Python中使用字串
a、使用單引號(‘)
用單引號括起來表示字串,例如:
str=’this is string’;
print str;

b、使用雙引號(“)
雙引號中的字串與單引號中的字串用法完全相同,例如:
str=”this is string”;
print str;

c、使用三引號(”’)
利用三引號,表示多行的字串,可以在三引號中自由的使用單引號和雙引號,例如:
str=”’this is string
this is pythod string
this is string”’
print str;
數字
Python3 支援 int、float、bool、complex(複數)。
數值運算

>>>5 + 4  # 加法
9
>>> 4.3 - 2 # 減法
2.3
>>> 3 * 7  # 乘法
21
>>> 2 / 4  # 除法,得到一個浮點數
0.5
>>> 2 // 4 # 除法,得到一個整數
0
>>> 17 % 3 # 取餘 
2
>>> 2 ** 5 # 乘方
32

迭代器

迭代器就是可以幫助我們不斷迴圈的做某件事情的工具,比如說我們使用for..in…迴圈一個數組,就是通過迭代器完成的。
在python中,有個iter方法,一個類實現它既可進行迭代

class ff:
    b = 0
    def __init__(self,a):
        self.a = a
    def __iter__(self):
        return self
    def __next__(self):
        self.b += 1
        if self.b>self.a:
            raise StopIteration
        return self.b**2

for a in ff(3):
     print(a)

該方法返回一個迭代物件,然後,Python的for迴圈就會不斷呼叫該迭代物件的next()方法拿到迴圈的下一個值,直到遇到StopIteration錯誤時退出迴圈。
生成器
生成器與迭代器類似,但是生成器不會把結果儲存在一個系列中,而是儲存生成器的狀態,在每次進行迭代時返回一個值,直到遇到StopIteration異常結束。
在Python中,使用了yield的函式就稱為生成器。
跟普通函式不同的是,生成器是一個返回迭代器的函式,只能用於迭代操作,可以理解為:生成器就是一個迭代器。
生成器和函式的執行流程不一樣,函式是順序執行,遇到return語句或者最後一行函式語句就結束。在呼叫生成器執行過程中,每次遇到yield時函式會暫停並儲存當前所有的執行資訊,返回yield值。並在下一次執行next方法時,從當前位置繼續執行

sum([i for i in xrange(10000000000)])
sum(i for i in xrange(10000000000))

在電腦上執行上面兩個表示式,會發現上面那個會佔用大量記憶體導致電腦卡死,而下面那個幾乎沒有佔到多少記憶體,就是因為迭代器是直接返回一個列表,而生成器只會在需要時呼叫,且只儲存一個狀態,所以在很多時候選擇生成器是更好的選擇。
但是生成器的缺點就是隻能遍歷一次