python高階特性-列表生成式
列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。
舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
可以用list(range(1, 11))
:
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
但如果要生成[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]
還可以使用兩層迴圈,可以生成全排列:
>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
三層和三層以上的迴圈就很少用到了。
運用列表生成式,可以寫出非常簡潔的程式碼。例如,列出當前目錄下的所有檔案和目錄名,可以通過一行程式碼實現:
>>> import os # 匯入os模組,模組的概念後面講到 >>> [d for d in os.listdir('.')] # os.listdir可以列出檔案和目錄 ['.emacs.d', '.ssh', '.Trash', 'Adlm', 'Applications', 'Desktop', 'Documents', 'Downloads', 'Library', 'Movies', 'Music', 'Pictures', 'Public', 'VirtualBox VMs', 'Workspace', 'XCode']
for
迴圈其實可以同時使用兩個甚至多個變數,比如dict
的items()
可以同時迭代key和value:
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> for k, v in d.items():
... print(k, '=', v)
...
y = B
x = A
z = C
因此,列表生成式也可以使用兩個變數來生成list:
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> [k + '=' + v for k, v in d.items()]
['y=B', 'x=A', 'z=C']
最後把一個list中所有的字串變成小寫:
>>> L = ['Hello', 'World', 'IBM', 'Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']
相關推薦
Python高階特性——列表生成式與生成器
列表生成式: 1)、 L=[x*x for x in range(1,11) if x%2==0] 等價於 L = [] for x in range(1, 11): if x%2==0: L.append(x * x) 2)、 a=[m
python高階特性-列表生成式
列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。 舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)): >>
Day9 python高級特性-- 列表生成式 List Comprehensions
roc 更多 篩選 implicit os模塊 CI 但是 lib div Python內置的非常簡單卻強大的可以用來創建list的生成式。 私理解為,就是for循環出來的結果搞成個list~~~~ 要生成順序增量list可以使用list(range(x,y))
python List Comprehensions(列表生成式)
itl 51cto os模塊 技術分享 tle 出錯 生成式 oos pri 列表生成式: 創建List一、普通創建List#!/usr/bin/python#common establish waylis1 = [];for x in range(1, 10): l
python基礎之列表生成式
例1: >>> List=[x for x in range(10)] >>> List [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 等價於: >>> List=[] >>> for x in ra
python語法_列表生成式_生成式
python 類比 span 生成器 進行 生成式 什麽 next 之前 列表生成式 a = [x for x in range(10)] print(a) x 可進行操作 a = [x*2 for x in range(10)] print(a) x甚至可以為函數, de
Python中list列表生成式如何操作使用?list詳解
列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。 一、舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):
【廖雪峰Python習題集】列表生成式
如果list中既包含字串,又包含整數,由於非字串型別沒有lower()方法,所以列表生成式會報錯: >>> [s.lower() for s in L] Traceback (mos
Python學習:列表生成式和列表生成器
一、列表生成式 列表生成式:顧名思義就是python中生成列表的表示式。運用列表生成式可以快速的生成列表,程式碼卻很簡潔。 示例一: 如要生成 [1, 2, 3, 4, 5, 6, 7, 8, 9] 列表: lb = [x for x in ran
07-python學習筆記-列表生成式
2017.6.4 參考資料 可以使用List Comprehensions來建立list,它是Python內建的,非常簡單,非常強大。 例子1 要生成list[1,2,3,4,5,6],使用list(range(1,7)) >
Python生成器和列表生成式
生成器: 在Python中, 這種一邊迴圈一邊計算的機制, 稱為生成器:generator 列表生成式:L(list) = [x * x for x in range(10)] 生成器: g(generator) = (x * x for x in range(10)
python中的列表生成式 | 字典生成式
1.列表生成式 列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。 舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))
python 迴圈與列表生成式
一般而言,在迴圈與列表生成式都可選的時候,列表生成式感覺速度會更快一點,做一個對比試驗: # python3 import time def compare_time(N): start
python三元表示式+列表生成式
三元表示式長的樣子大概是這樣:def max1(a,b): return a if a > b else b #相當於C中的a>b?a:b print(max1(4,5)) #5然後列表生成式大概是這樣:a = [1, 2, 3, 4, 5] b =
Python(十一) 列表生成式
要生成[1x1, 2x2, 3x3, …, 10x10]怎麼做? 方法一是迴圈: L=[] for x in range(1,11): L.append(x*x) print(L) 方法二、使用列表生成式 print([x * x for
Python(七)語法 高階特性 切片 | 迭代(迴圈)| 列表生成式 | 生成器 | 迭代器
切片 取一個list或tuple的部分元素是非常常見的操作 有一個list[0,1,2,3,4,5]如果我們要取前n個元素比如說3個數 一般做法是 >>> L=[] >>> n=3 >>> for i in range(n): .
python高階特性:切片/迭代/列表生成式/生成器
廖雪峰老師的教程上學來的,地址:python高階特性 下面以幾個具體示例演示用法: 一、切片 1.1 利用切片實現trim def trim(s): while s[:1] == " " or s[-1:] == " ": # 若第1個元素或最後1個元素為空格 if
Python高階特性(切片 迭代 列表生成式 生成器 迭代器)學習筆記
在Python中,程式碼不是越多越好,而是越少越好。程式碼不是越複雜越好,而是越簡單越好。 基於這一思想,Python中有非常有用的高階特性,1行程式碼能實現的功能,決不寫5行程式碼。請始終牢記,程式碼越少,開發效率越高。 切片 (Slice) 切
python切片、迭代、生成器、列表生成式等高階特性學習
python高階特性 1行程式碼能實現的功能,決不寫5行程式碼。請始終牢記,程式碼越少,開發效率越高。 切片 當我們要取一個list中的前n各元素時,如果前n個少的話,我們還可以一個一個的取,但
Python學習筆記--3、高階特性-切片、迭代、列表生成式、生成器、迭代器
廖老師在這個地方提到了,在Python 中,並不是寫的程式碼越多越好,而是寫的程式碼越少越好,月簡單越好。 1、切片 什麼是切片,簡單來說就是對list或者tuple中的部分元素進行取出操作。例子如下: 應注意的是,python的首位的元素的編號是0,所以,要確定好[