Python高階特性——學習筆記
L = [1, 2, 3, 4, 5]
L[0:3]=[1,2,3]
表示,從索引0
開始取,直到索引3
為止,但不包括索引3
。即索引0
,1
,2
,正好是3個元素。
如果第一個索引是0
,還可以省略
倒數切片L[-2:]=[4,5]從倒數第二個數 到 最後一個數
L = list(range(100))# 建立一個0-99的數列L
L[:10:2]# 前10個數,每兩個取一個
L[::5]# 所有數,每5個取一個
iterable.[::-1] # 字串翻轉。非常有用!!
tuple'xxx'
也可以看成是一種list,每個元素就是一個字元。因此,字串也可以用切片操作,只是操作結果仍是字串,相當於其他程式語言裡的字串擷取函式 substring等
2、Python的for
迴圈抽象程度要高於Java的for
迴圈,因為Python的for
迴圈不僅可以用在list或tuple上,還可以作用在其他可迭代物件上。list這種資料型別雖然有下標,但很多其他資料型別是沒有下標的,但是,只要是可迭代物件,無論有無下標,都可以迭代
,比如dict就可以迭代,字串也可迭代。
3、 判斷一個物件是可迭代物件,方法是通過collections模組的Iterable型別判斷:for key in d: #迭代key for value in d.values():#迭代value for k, v in d.items():#key,value都迭代 for ch in 'ABC': #字串,分別列印A,B,C</span>
4、 Python內建的
enumerate
函式可以把一個list變成索引-元素對,這樣就可以在for
迴圈中同時迭代索引和元素本身:5、
for
迴圈裡,同時引用了兩個變數,在Python裡是很常見的,比如下面的程式碼:6、列表生成式: Python內建的非常簡單卻強大的可以用來建立list的生成式 生成list
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
可以用list(range(1, 11))
篩選出僅偶數的平方字串的拼接用‘+’
列出當前目錄下的所有檔案和目錄名
>>> import os # 匯入os模組,模組的概念後面講到
>>> [d for d in os.listdir('.')] # os.listdir可以列出檔案和目錄,路徑可以修改如e:/sublime/python
['.emacs.d', '.ssh', '.Trash', 'Adlm', 'Applications']
最後把一個list中所有的字串變成小寫:
>>> L = ['Hello', 'World', 'IBM', 'Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']
for 前面的表示式就是所需要做的操作,對迭代中的每一個item進行該操作,if判斷進行篩選,寫在列表生成式的最後,最後返回操作後的結果。
7、生成器generator:解決需要儲存列表所有元素的記憶體難題, 在迴圈的過程中不斷推算出後續的元素, 不必建立完整的list,從而節省大量的空間。
建立generator的方法:
- 列表生成式的
[]
改成(),next()函式獲取generator的每一個元素,其實一般很少用該函式,用for迴圈會更加方便。
>>> g = (x * x for x in range(10))
>>> for n in g:
... print(n) 函式定義中使用yield
關鍵字:會中斷的print
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b # 函式列印時為print(b)
a, b = b, a + b
n = n + 1
return 'done'
獲取前max個元素用for也是非常方便,因為generator是可以迭代的
>>> for n in fib(6):
... print(n)
def triangles(): L=[1] yield L while True: L=[1]+[L[i]+L[i+1] for i in range(len(L)-1)]+[1] yield L n = 0 for t in triangles(): print(t) n = n + 1 if n == 10: break 8、迭代器物件Iterator 凡是可作用於
for
迴圈的物件都是Iterable
型別(可迭代);
凡是可作用於next()
函式的物件都是Iterator
型別,它們表示一個惰性計算的序列;
集合資料型別如list
、dict
、str
等是Iterable
但不是Iterator
,不過可以通過iter()
函式獲得一個Iterator
物件。
迭代器Iterator
都是可迭代的Iterable
。
>>> isinstance('abc', Iterator)
False
>>> isinstance(iter('abc'), Iterator)
True
相關推薦
Python高階特性——學習筆記
Python中非常有用的高階特性,1行程式碼能實現的功能,決不寫5行程式碼。請始終牢記,程式碼越少,開發效率越高。 1、切片slice。L = [1, 2, 3, 4, 5] L[0:3]=[1,
Python學習筆記(三) Python高階特性
1.切片 對於list和tuple,經常要取其中一部分元素,如果用迴圈取,太麻煩,可以用切片簡化操作 myList = [1, 2, 3, 4, 5] #表示,從索引0開始取,直到索引3為止,但不包括索引3, 輸出 myList[0:3] = [1, 2, 3] print("m
Python學習筆記:Python高階特性
Python學習筆記:Python高階特性 學自廖雪峰巨佬的Python3教程:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317568446245b3e1c883
python學習筆記(三)--python高階特性
python的高階特性有切片、迭代、列表生成式、生成器、迭代器等,下面來介紹這幾種高階特性:1、切片:切片特別簡單,用中括號表示範圍,包前不包後。就是中括號裡邊的範圍前面的數值被包括在內,後面的數值不被包括在內。L = ['a','b','c','d']L[0:3] 索
Python高階特性(切片 迭代 列表生成式 生成器 迭代器)學習筆記
在Python中,程式碼不是越多越好,而是越少越好。程式碼不是越複雜越好,而是越簡單越好。 基於這一思想,Python中有非常有用的高階特性,1行程式碼能實現的功能,決不寫5行程式碼。請始終牢記,程式碼越少,開發效率越高。 切片 (Slice) 切
【Python學習筆記】python高階特性:列表生成式
【根據廖雪峰python教程整理】 一、列表生成式 列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。 舉個例子,要生成lis
再一次重新學習Python——高階特性
切片 L[0:3]表示,從索引0開始取,直到索引3為止,但不包括索引3。即索引0,1,2,正好是3個元素。如果第一個索引是0,還可以省略。 同樣支援倒數切片 >>> L = ['Michael', 'Sarah', 'Tracy', 'Bob',
python切片、迭代、生成器、列表生成式等高階特性學習
python高階特性 1行程式碼能實現的功能,決不寫5行程式碼。請始終牢記,程式碼越少,開發效率越高。 切片 當我們要取一個list中的前n各元素時,如果前n個少的話,我們還可以一個一個的取,但
Python 3.6學習筆記(一)
示例 ror 功能 put -m 但是 對象 初始化 absolut 開始之前 基礎示例 Python語法基礎,python語法比較簡單,采用縮緊方式。 # print absolute value of a integer a = 100 if a >= 0:
java 新特性學習筆記
sets arp string get pen option ring true read java 1.7 Files.write(path,list,StandardCharsets.UTF_8,StandardOpenOption.APPEND); St
流暢的python和cookbook學習筆記(一)
構造函數 推導 笛卡爾 expr 列表推導 叠代 建立 笛卡兒 imp 1.數據結構 1.1 內置序列類型 四種序列類型: 1.容器序列:list、tuple和collections.deque 2.扁平序列:str、bytes、bytearray、memory
流暢的python和cookbook學習筆記(五)
pytho col () 學習 util 學習筆記 取出 minute python 1.隨機選擇 python中生成隨機數使用random模塊。 1.從序列中隨機挑選元素,使用random.choice() >>> import random
流暢的python和cookbook學習筆記(八)
不可變 pri 列表 改變 如果 book 影響 color print 1.函數的默認參數必須不可變 如果函數的默認參數為可變的對象,那麽默認參數在函數外被修改也會影響到函數本身的。 >>> def spam(a, b=None): # b要為不
Python 進階學習筆記
def 進階學習 學習 blog 私有屬性 屬性和方法 .get line person 把函數作為參數 import math def add(x, y, f): return f(x) + f(y) print add(9, 16, math.sqr
Python(Head First)學習筆記:四
raise b- before hat contents -- supported between data loss 4 持久存儲:文件存儲、讀寫 數據保存到文件:在學習的過程中出現了一個問題,老是報一個錯:SyntaxError: invalid syntax;
python requests庫學習筆記(下)
mail 接收 緩存 nbsp 0.10 基本 eat agen 維基百科 1.請求異常處理 請求異常類型: 請求超時處理(timeout): 實現代碼: import requestsfrom requests import exceptions #引
python入門教程學習筆記#2
tab 下載 body 中文 穩定 出現 包含 圖1 ret 2.1 python3.6 工具使用 運行python 自帶的idle後,輸入python命令,如print(‘hello world‘),回車後輸出 hello world 其中mac系統會出現一段warn
python入門教程學習筆記#1
ext game 2.7 功能 sublime wxpython 程序 免費 圖形界面 下載地址:https://www.python.org/,版本可選擇3.6或2.7 1.2 編譯環境pycharm 下載地址:https://www.jetbrains.com/p
python自動化測試學習筆記-2-字典、元組、字符串方法
ima weight ict 常用 分享圖片 def 刪除列 設置 統計 一、字典 Python字典是另一種可變容器模型,且可存儲任意類型對象,如字符串、數字、元組等其他容器模型。 字典的每個鍵值(key=>value)對用冒號(:)分割,每個對之間用逗號(,)分割,
python 3.x 學習筆記9 (面向對象)
表現 技術發展 計算 多種實現 類方法 run spa col 對數 1.面向對象 面向對象是一種對現實世界理解和抽象的方法,是計算機編程技術發展到一定階段後的產物。 2.類(class): 一個類即是對一類擁有相同屬性的對象的抽象、藍圖、原型。在類中定義了這些