列表推導式(又稱列表解析式)提供了一種簡明高效的方法來創(chuàng)建列表峻厚。
列表推導式基本形式為: [表達式 for 變量 in 列表]
它的結構是在一個中括號里包含一個表達式,然后是一個for語句焕毫,然后是 0 個或多個 for 或者 if 語句。那個表達式可以是任意的驶乾,意思是你可以在列表中放入任意類型的對象邑飒。返回結果將是一個新的列表,在這個以 if 和 for 語句為上下文的表達式運行完成之后產(chǎn)生级乐。
列表推導式的執(zhí)行順序:各語句之間是嵌套關系疙咸,左邊第二個語句是最外層,依次往右進一層风科,左邊第一條語句是最后一層
需求實例--寫出一個如下的二維數(shù)組
[[0, 1, 2, 3, 4 ···, 99]
[100,101,102,···,199]
[200,201,202,···,299]
......
[9900,9901,9902,···,9999]]
首先,寫出一個一位數(shù)組 [0,1,2,3,···99]
l = []
for x in range(100):
l.append(x)
image
第二步,輸出一百個一樣的 [0,1,2,3,···99]
l1 = []
l2 = []
for x in range(100):
for y in range(100):
l2.append(y)
l1.append(l2)
image
第三步,按照需求輸出一個二維數(shù)組
l1 = []
for x in range(100):
l2 = []
for y in range(100):
l2.append(y + x *100)
l1.append(l2)
image
這樣就可以得到上面所說的數(shù)組了
解惑
但是,我很奇怪,為什么要把l2 = [] 放在for循環(huán)里面呢?
如果要把l2 = [] 放在for 循環(huán)外面,會是一種什么情況呢?
l1 = []
l2 = []
for x in range(100):
for y in range(100):
l2.append( y + x * 100)
l1.append(l2)
image
這樣得到的是一個1 * 10000 的二維數(shù)組,就是把這一萬個數(shù)放在了一個數(shù)組當中,而不是像開頭那樣說的將這一萬個數(shù)字放在一個100 * 100的二位數(shù)組當中.
將 l2 = [] 放在第一重for 循環(huán)里面, 第一重for循環(huán)每循環(huán)完一次就創(chuàng)建一個新的數(shù)組存放第二重循環(huán)的中的數(shù)據(jù).