1-切片
切片用於提取一組資料list、tuple等中的一部分,個人感覺和matlab語法很相似,
例如
l
[0:3] #表示取l
[0],l
[1],l
[2]l
[:3] #與上面等價,初始或者結束為首尾位置,則可以縮寫
l[-2:0] #表示取倒數第乙個l
[-1]和倒數第二個l
[-2]
l[-2:] #與上面等價
l[0:5:2]#表示以2個2個取,得到l
[0],l
[2],l
[4]l
[::2] #表示2個2個取整個資料集
切片也同樣適用於字串,
'abcdefg'[0:2] #結果取ab
2-迭代
python可以對任何可迭代物件進行迭代,迭代使用for x in y的形式進行迭代。
#d =
for key in d: #遍歷d的key,輸出
print(key)
forvalue
in d.values() #用於迭代dict的value
for x,y in d.items() #用於同時迭代dict的key 和value
如何判斷是否為可迭代物件呢?
引入函式
>>>
from collections import iterable
>>> isinstance('abc', iterable) # str是否可迭代
true
>>> isinstance([1,2,3], iterable) # list是否可迭代
true
>>> isinstance(123, iterable) # 整數是否可迭代
false
3-列表生成式
最簡單的列表生成
[x + 1 for x in range(1,5)]
[2,3,4,5]
增加條件的列表生成
[x + 1 for x in range(1,5) if x%2 ==0]
[3,5]
雙層列表生成
[x + y for x in
'abc'
for y in
'123']
['a1','a2','a3','b1','b2','b3','c1'
'c2','c3']
簡單應用,例如把list裡面的所有字串的第乙個字母變成小寫
m = ['he','she']
[l[0].lower() + l[1:] for l in m] #輸出['he','she']
4-生成器(generator)
利用列表生成式,我們可以一次性生成許多資料,如果我們只需要使用其中一部分,進行動態的生成,不用一次性占用很多記憶體,迴圈進行到**,就計算出下乙個值,就可以使用生成器,生成器的使用有兩種方法,
第一種,使用列表生成的generator:
>>>g = (x+1
for x in range(0,4)) #將變成()
>>>g
#不會輸出,因為這個時候g是乙個generator,還未開始動態生成
>>>g = (x+1
for x in range(0,4))
>>>for
value
in g:
print(value)12
34
第二種針對無法使用列表生成式寫出的複雜過程,可以使用函式進行generator,與一般函式不同的是,一般函式執行函式內部語句直到執行到return就退出函式體,generator的函式使用yield表示生成一次,執行到第乙個yield時候就出該值,然後從這個位置開始繼續執行下去,執行到最後一句語句或者return的時候就退出函式體。
def
tri(n):
l = [1]
while n > 0:
n =n - 1
yield l
l = [l[x] + l[x+1] for x in range(len(l)-1)]
l.insert(0,1)
for x in tri(4):
print(x)
#結果#[1]
#[1,1]
#[1,2,1]
#[1,3,3,1]
上述兩種方法都可以使用next()函式進行不斷求得下乙個數值,
tips
使用生成器生成的序列是一種惰性序列,他只在你需要的範圍內在需要的時候生成,並且可以是乙個無限序列,
Python之高階特性(2)
一 列表生成式 1 生成abc與def的全排列 2 1 輸出列表裡的名字 並且第乙個字母大寫 2 當列表裡有名字是非法字元時候,輸出列表裡的名字 並且第乙個字母大寫 3 找出指定目錄下以.log結尾的檔案 import os模組 os.listdir 檔名 檢視目錄下面的所有檔案 二 生成器 為什麼...
python學習之高階特性
切片 對列表 元組 字串 字典取中間的一部分,在c中一般是通過for迴圈拷貝 memcpy strcat等操作。而python提供了更方便的切片操作符 m n 前閉後開,如果從0取m可以省略 如果只用 就是切整片 也可以從尾端切片 m 前後的閉區間。列表生成式 list range m,n 構造乙個...
Python學習之高階特性詳解
列表生成式 list comprehensions 切片和迭代就不說了,這裡直接先看一下列表生成式吧,從名字就能大概猜出這是生成列表的一些方法,比如 如何生成 1 1,2 2,10 10 可以用迴圈不斷向列表尾部新增元素,如果使用 pythonic 的方法,也就是列表生成式,則是 x x for x...