python 列表生成式
生成列表
要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我們可以用range(1, 11):
>>> 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]
這種寫法就是Python特有的列表生成式。利用列表生成式,可以以非常簡潔的程式碼生成 list。
寫列表生成式時,把要生成的元素 x * x 放到前面,後面跟 for 迴圈,就可以把list創建出來,十分有用,多寫幾次,很快就可以熟悉這種語法。
複雜表示式
使用for迴圈的迭代不僅可以迭代普通的list,還可以迭代dict。
假設有如下的dict:
d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
完全可以通過一個複雜的列表生成式把它變成一個 HTML 表格:
tds = ['<tr><td>%s</td><td>%s</td></tr>' % (name, score) for name, score in d.iteritems()]
print '<table>'
print '<tr><th>Name</th><th>Score</th><tr>'
print '\n'.join(tds)
print '</table>'
注:字串可以通過 % 進行格式化,用指定的引數替代 %s。字串的join()方法可以把一個 list 拼接成一個字串。
把打印出來的結果儲存為一個html檔案,就可以在瀏覽器中看到效果了:
<table border="1">
<tr><th>Name</th><th>Score</th><tr>
<tr><td>Lisa</td><td>85</td></tr>
<tr><td>Adam</td><td>95</td></tr>
<tr><td>Bart</td><td>59</td></tr>
</table>
條件過濾
列表生成式的 for 迴圈後面還可以加上 if 判斷。例如:
>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
如果我們只想要偶數的平方,不改動 range()的情況下,可以加上 if 來篩選:
>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
有了 if 條件,只有 if 判斷為 True 的時候,才把迴圈的當前元素新增到列表中。
多層表示式
for迴圈可以巢狀,因此,在列表生成式中,也可以用多層 for 迴圈來生成列表。
對於字串 ‘ABC’ 和 ‘123’,可以使用兩層迴圈,生成全排列:
>>> [m + n for m in 'ABC' for n in '123']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
翻譯成迴圈程式碼就像下面這樣:
L = []
for m in 'ABC':
for n in '123':
L.append(m + n)
相關推薦
Python---列表生成式
python 列表生成式 list# 列表生成式 # 列表生成式即List Comprehensions,是Python內置的非常簡單卻強大的可以用來創建list的生成式 import os # 生成 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] l1 = list(range(1, 1
初學Python——列表生成式、生成器和叠代器
過程 100萬 import 通過 str __next__ 出現 tor 創建 一、列表生成式 假如現在有這樣一個需求:快速生成一個列表[1,2,3,4,5,6,7,8,9,10],該如何實現? 在不知道列表生成式的情況下,可能會這樣寫: a=[1,2,3,4,5,6,
[python] 列表生成式
列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。 舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)): >>> list(r
python-列表生成式(二)(應用例項)
本文作者:黎智煊,叩丁狼高階講師。原創文章,轉載請註明出處。 上一節說到了列表生成式的原理和基本語法,現在就寫一些例項進行說明 我們可以對幾個生成列表的要求分別通過“不使用列表生成式”和“使用列表生成式”來實現,然後做個對比總結。 例項1:生成一個從3到10的數字列表
python-列表生成式(一)
本文作者:黎智煊,叩丁狼高階講師。原創文章,轉載請註明出處。 列表生成式 顧名思義,列表生成式就是一個用來生成列表的特定語法形式的表示式。 例如我們需要生成一個列表,由0到9組成,那我們就可以這樣寫: list1 = [0,1,2,3,4,5,6,7,8,9]
python——列表生成式、生成器
一、列表生成式 根據表示式,一次性生成一個列表。缺點:佔用記憶體空間; [x for x in range(10)] # 生成列表 [0,1,2,3,4,5,6,7,8,9] [x*2 for x in range(10)] # 生成列表 [0,2,3,4,5,10,12,14,1
python-列表生成式
需求1.接收變數k,a,b s = '51 5000 10000' 第一種: li = [] for item in s.split(): li.append(int(item)) k,a,b = li print(k,a,b) 列表生成式: li=[int(item
python列表生成式
>>> list(range(1, 11)) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> L = [] >>> for x in range(1, 11): ... L.
Python 列表生成式 的簡單實用
列表生成式 #先列舉一個簡單的例子 a = [i for i in range(10)] print(a) #輸出結果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 還可以使用兩層迴圈,可以生成全排列: b = [m + n for m in
python-----列表生成式和列表生成器表達
列表表示式: 程式一: 常規寫法: L = [] for x in range(1, 11): L.append(x * x) print(L) #[1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 列表生成式寫法: L = [x * x for x
Python教程學習簡記5--Python 列表生成式(List Comprehensions)
列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。 舉個例子,要生成list [1,2,3,4,5,6,7,8,9,10]可以用list(range(1, 11)): >>&
python 列表生成式
生成列表 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我們可以用range(1, 11): >>> range(1, 11) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 但如果要
python 列表生成式 人生苦短我用Python
列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。 舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)): >>&
python 列表生成式
列表生成式即 List Comprehensions, 是python內建非常簡單卻強大的可以用來建立List的生成式 舉個例子,要生成list[1,2,3,4,5,6,7,8,9,10]可以用list(range(1,11)): 但如果要生成[1x1,
Python列表生成式、迭代器、生成器
三元表示式 列表生成式 我們現在有個需求,將列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]中每個數字都加1,你能想到幾種解決方案? NO1. 普通青年版 a = [1, 2, 3, 4, 5, 6,
python列表生成式,生成器,迭代器
列表生成式:也叫推導,使程式碼更簡潔1.列表推導式: a= [x for x in range(100) if x % 3 == 0]2.字典推導式 #快速更換key和value 字典推導和列表推導的使用方法是類似的,中括號該改成大括號。 y =
python之列表生成式
list if判斷 實現 css == tor xcod 例如 列表 列表生成式即List Comprehensions,是Python內置的非常簡單卻強大的可以用來創建list的生成式。 舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 1
python函數式編程,列表生成式
value cti 函數編程 列表 fun zhang 導入 集合 過濾 1.python 中常見的集中存儲數據的結構: 列表 集合 字典 元組 字符串 雙隊列 堆 其中最常見的就是列表,字典。 2.下面講一些運用循環獲取字典列表的元素 1 &
Python【知識點】面試小點列表生成式小坑
ada 調用 strong res 得到 bad 裝飾器 print eve 1、問題 有這麽一個小面試題: 看下面代碼請回答輸出的結果是什麽?為什麽? result = [lambda x: x + i for i in range(10)] print(re
Python高級特性:Python叠代、生成器、列表生成式
才會 except ons oot 惰性 pen 常用 fun mta 叠代給定一個list或tuple,我們可以通過for循環來遍歷這個list或tuple,這種遍歷稱為叠代(Iteration)。在java和C語言中,叠代是通過循環list的下標來完成的,Python中