python初心记录二
切片
L =[1,2,3,4,5,6,7,8,9,0] L[0:3] L[-3]迭代
如果給定一個list或tuple,我們可以通過for循環來遍歷這個list或tuple,這種遍歷我們稱為迭代(Iteration)。
因為dict的存儲不是按照list的方式順序排列,所以,迭代出的結果順序很可能不一樣。
默認情況下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同時迭代key和value,可以用for k, v in d.items()。
列表生成式
列表生成式即List Comprehensions,是Python內置的非常簡單卻強大的可以用來創建list的生成式。
但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循環:
>>> L = [] >>> for x in range(1, 11): ... L.append(x * x) ... >>> L [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]但是循環太繁瑣,而列表生成式則可以用一行語句代替循環生成上面的list:
>>> [x * x for x in range(1, 11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]寫列表生成式時,把要生成的元素x * x放到前面,后面跟for循環,就可以把list創建出來,十分有用,多寫幾次,很快就可以熟悉這種語法。
for循環后面還可以加上if判斷,這樣我們就可以篩選出僅偶數的平方:
>>> [x * x for x in range(1, 11) if x % 2 == 0] [4, 16, 36, 64, 100]生成器
Python中,這種一邊循環一邊計算的機制,稱為生成器:generator。
要創建一個generator,有很多種方法。第一種方法很簡單,只要把一個列表生成式的[]改成(),就創建了一個generator:
>>> L = [x * x for x in range(10)] >>> L [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> g = (x * x for x in range(10)) >>> g <generator object <genexpr> at 0x1022ef630>創建L和g的區別僅在于最外層的[]和(),L是一個list,而g是一個generator。
我們可以直接打印出list的每一個元素,但我們怎么打印出generator的每一個元素呢?
如果要一個一個打印出來,可以通過next()函數獲得generator的下一個返回。
generator是非常強大的工具,在Python中,可以簡單地把列表生成式改成generator,也可以通過函數實現復雜邏輯的generator。
要理解generator的工作原理,它是在for循環的過程中不斷計算出下一個元素,并在適當的條件結束for循環。對于函數改成的generator來說,遇到return語句或者執行到函數體最后一行語句,就是結束generator的指令,for循環隨之結束。
請注意區分普通函數和generator函數,普通函數調用直接返回結果:
>>> r = abs(6) >>> r 6generator函數的“調用”實際返回一個generator對象:
>>> g = fib(6) >>> g <generator object fib at 0x1022ef948>迭代器
可以直接作用于for循環的數據類型有以下幾種:
一類是集合數據類型,如list、tuple、dict、set、str等;
一類是generator,包括生成器和帶yield的generator function。
這些可以直接作用于for循環的對象統稱為可迭代對象:Iterable。
可以使用isinstance()判斷一個對象是否是Iterable對象。
凡是可作用于for循環的對象都是Iterable類型;
凡是可作用于next()函數的對象都是Iterator類型,它們表示一個惰性計算的序列;
集合數據類型如list、dict、str等是Iterable但不是Iterator,不過可以通過iter()函數獲得一個Iterator對象。
Python的for循環本質上就是通過不斷調用next()函數實現的,例如:
for x in [1, 2, 3, 4, 5]: pass實際上完全等價于:
# 首先獲得Iterator對象: it = iter([1, 2, 3, 4, 5]) # 循環: while True: try: # 獲得下一個值: x = next(it) except StopIteration: # 遇到StopIteration就退出循環 break函數式編程
函數是Python內建支持的一種封裝,我們通過把大段代碼拆成函數,通過一層一層的函數調用,就可以把復雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程序設計。函數就是面向過程的程序設計的基本單元。
高階函數
變量可以指向函數
函數名也是變量
轉載于:https://www.cnblogs.com/benu/p/6413027.html
總結
以上是生活随笔為你收集整理的python初心记录二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国农业银行app如何激活信用卡(《中国
- 下一篇: 党支部党员个人学习计划3篇