1. 程式人生 > >python 列表生成式

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中