两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

Python中存在一種特殊的表達式,名為推導式,它的作用是將一種數(shù)據(jù)結構作為輸入,再經過過濾計算等處理,最后輸出另一種數(shù)據(jù)結構。根據(jù)數(shù)據(jù)結構的不同會被分為列表推導式、集合推導式和字典推導式。我們先著重來介紹最常使用的列表推導式。

我們先看一下列表推導式的語法格式:

listname = [expression for variable in 對象(if condition)]

listname:新生成的列表名字。

expression:表達式。

variable:變量名。

(if condition):用于從對象中選擇符合要求的列表。

我們分別從規(guī)定范圍的數(shù)值列表、規(guī)定條件的列表和符合條件元素組成的列表三個方面講起。

1. 規(guī)定范圍的數(shù)值列表

我們先思考一下當我們需要生成10個數(shù)字并存放列表當中,我們先看一下普通方式:

listname = []
for i in range(10):
   listname.append(i)
print(listname)

輸出結果為:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

而使用列表推導式只需要一行就可以:

listname = [i for i in range(10)]

輸出結果為:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

這種方式能簡化我們在定義列表時的操作。

2. 根據(jù)規(guī)定條件生成列表

假定我們已知一個列表為 listname = [1,3,5,6,7,9,10,23,26,28,64,98],我們要找到其把里面的數(shù)全部加5,普通方法:

listname = [1,3,5,6,7,9,10,23,26,28,64,98]
for i in range(len(listname)):
      listname[i] += 5
print(listname)

輸出結果為:

[6, 8, 10, 11, 12, 14, 15, 28, 31, 33, 69, 103]

而使用列表推導式同樣很簡潔:

listname = [1,3,5,6,7,9,10,23,26,28,64,98]
listname = [ i + 5 for i in listname]

輸出:

[6, 8, 10, 11, 12, 14, 15, 28, 31, 33, 69, 103]

3. 符合條件的元素組成的列表

這種類型的列表推導式要比前兩種復雜點,但是能簡化更多的代碼。

我們先舉個列子來看一下代碼格式:

已知一個列表為listname = [8,33,53,64,73,95,101,123,126,164,198],然后我們要找到列表中小于大于100的數(shù)字,然后乘上0.8,最后返回到列表中。

如果我們使用普通方法:

listname = [10,20,30,40,60,120,130,140,160,180,200]
newlist = []#創(chuàng)建新列表來存儲
for i in range(len(listname)):#索引值遍歷
    if listname[i] >100:#找到大于100的數(shù)
        listname[i] *= 0.8#乘上0.8
        newlist.append(listname[i])#添加到新列表中
print(newlist)

輸出結果為:

[96.0, 104.0, 112.0, 128.0, 144.0, 160.0]

使用列表推導式:

listname = [10,20,30,40,60,120,130,140,160,180,200]
newlist = [i*0.8 for i in listname if i > 100]
print(newlist)

輸出結果:

[96.0, 104.0, 112.0, 128.0, 144.0, 160.0]

我們來根據(jù)這個例子的語法結構來分析一下:

python list2

在使用復雜的列表推導式的時候我們可以采用這種方式,可以理解為我們先把符合條件的元素(條件語句)從對象中挑選出來,然后再經過輸出表達式的處理,最后存放到了列表當中,形成新的列表。

4. 例題

下面提供幾道例題可以嘗試著做一下。

1.列表[1,2,13,22,25],請使用使用列表推導式提取出大于10的數(shù),并把每個數(shù)平方,最終輸出。

運行結果為:

[169, 484, 625]

代碼如下,可以先嘗試做完參考答案。

list = [1,2,13,22,25]
newlist = [i * i for i in list if i >10]
print(newlist)

2.列表推導式求列表所有奇數(shù)并構造新列表,list =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

代碼如下:

list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
newlist = [i for i in list if i%2 ==1]
print(newlist)

輸出結果為:

[1, 3, 5, 7, 9]


點贊(3)

C語言網提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:

一點編程也不會寫的:零基礎C語言學練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學奧賽或C++選手的 必學C++課程

藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程

手把手講解近五年真題的藍橋杯輔導課程

Dotcpp在線編譯      (登錄可減少運行等待時間)