1. 程式人生 > >Python高階特性——學習筆記

Python高階特性——學習筆記

Python中非常有用的高階特性,1行程式碼能實現的功能,決不寫5行程式碼。請始終牢記,程式碼越少,開發效率越高。 1、切片slice。L = [1, 2, 3, 4, 5] L[0:3]=[1,2,3]表示,從索引0開始取,直到索引3為止,但不包括索引3。即索引012,正好是3個元素。 如果第一個索引是0,還可以省略 倒數切片L[-2:]=[4,5]從倒數第二個數 到 最後一個數
L = list(range(100))# 建立一個0-99的數列L
L[:10:2]# 前10個數,每兩個取一個
L[::5]# 所有數,每5個取一個

iterable.[::-1] # 字串翻轉。非常有用!!
tuple
也是一種list,只是不可變,支援切片操作,操作的結果仍是tuple
字串'xxx'也可以看成是一種list,每個元素就是一個字元。因此,字串也可以用切片操作,只是操作結果仍是字串,相當於其他程式語言裡的字串擷取函式 substring等 2、Python的for迴圈抽象程度要高於Java的for迴圈,因為Python的for迴圈不僅可以用在list或tuple上,還可以作用在其他可迭代物件上。list這種資料型別雖然有下標,但很多其他資料型別是沒有下標的,但是,只要是可迭代物件,無論有無下標,都可以迭代 ,比如dict就可以迭代,字串也可迭代。
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>
3、 判斷一個物件是可迭代物件,方法是通過collections模組的Iterable型別判斷:
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
生成斐波那契數列無法用列表生成式來完成,因為列表生成式只能操作當前迭代的元素,而無法操作列表中的兩個元素。可以用函式打印出來,並儲存前n個數的列表,考慮利用生成器: 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型別,它們表示一個惰性計算的序列; 集合資料型別如listdictstr等是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): 一個類即是對一類擁有相同屬性的對象的抽象、藍圖、原型。在類中定義了這些