日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python輕量級循環(huán)-列表推導(dǎo)式

概 述

成都網(wǎng)站建設(shè)、網(wǎng)站制作的開發(fā),更需要了解用戶,從用戶角度來建設(shè)網(wǎng)站,獲得較好的用戶體驗(yàn)。創(chuàng)新互聯(lián)多年互聯(lián)網(wǎng)經(jīng)驗(yàn),見的多,溝通容易、能幫助客戶提出的運(yùn)營建議。作為成都一家網(wǎng)絡(luò)公司,打造的就是網(wǎng)站建設(shè)產(chǎn)品直銷的概念。選擇創(chuàng)新互聯(lián),不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來訪用戶感受到浩方產(chǎn)品的價(jià)值服務(wù)。

Python 列表推導(dǎo)式(list comprehension)利用其他列表創(chuàng)建新的列表,工作方式類似于for循環(huán),使用列表推導(dǎo)式可以快速生成一個(gè)列表,或者根據(jù)某個(gè)列表生成滿足指定需求的列表。

單循環(huán)

 
 
 
 
  1. [i for i in range(10)] 
  2. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

單循環(huán)+條件

0-20中所有能被3整除的數(shù)是多少

 
 
 
 
  1. [i for i in range(20) if i%3==0] 
  2. [0, 3, 6, 9, 12, 15, 18] 

多循環(huán)-2次

'ABC'和'EGF'所有可能的兩兩組合

 
 
 
 
  1. [i+j for i in 'ABC' for j in 'EFG'] 
  2. ['AE', 'AF', 'AG', 'BE', 'BF', 'BG', 'CE', 'CF', 'CG'] 

多循環(huán)-3次

'ABC'、'EFG'、‘HIJ’所有可能的三三組合

 
 
 
 
  1. [i+j+u for i in 'ABC' for j in 'EFG' for u in 'HIJ'] 
  2. ['AEH', 'AEI', 'AEJ', 'AFH', 'AFI', 'AFJ', 'AGH', 'AGI', 'AGJ',  
  3. 'BEH', 'BEI', 'BEJ', 'BFH', 'BFI', 'BFJ', 'BGH', 'BGI', 'BGJ', 
  4.  'CEH', 'CEI', 'CEJ', 'CFH', 'CFI', 'CFJ', 'CGH', 'CGI', 'CGJ'] 

多循環(huán)+單條件

首字母相同的男孩 女孩組合:

 
 
 
 
  1. girls = ['alice','bernice','clarice'] 
  2. boys  = ['chris','arnold','bob','bernod'] 
  3. [i+'<->'+j for i in girls for j in boys if i[0]==j[0]] 
  4. ['alice<->arnold', 'bernice<->bob', 'bernice<->bernod',  
  5. 'clarice<->chris'] 

多循環(huán)+多條件

第一個(gè)字母+第二個(gè)字母均相同

 
 
 
 
  1. [i+'<->'+j for i in girls for j in boys if (i[0]==j[0] and i[1]==j[1])] 
  2.  ['bernice<->bernod'] 

元組循環(huán)

列表可以直接循環(huán),改成元組也是可以的,但是直接生產(chǎn)了迭代器:

 
 
 
 
  1. (i+'<->'+j for i in girls for j in boys if i[0]==j[0]) 
  2.  at 0x0000015413B781C8> 
  3.  
  4. tuples = (i+'<->'+j for i in girls for j in boys if i[0]==j[0]) 
  5. for t in tuples: 
  6.     print(t) 
  7. alice<->arnold 
  8. bernice<->bob 
  9. bernice<->bernod 
  10. clarice<->chris 

效率問題

男孩-女孩名字對的例子中,其實(shí)效率不是很高,因?yàn)槌绦驎z測每個(gè)可能的配對。Python中有很多解決這個(gè)問題的方法,下面是其中一種比較高效的方法。

 
 
 
 
  1. letterGirls = {} 
  2. for girl in girls: 
  3.     letterGirls.setdefault(girl[0],[]).append(girl) 
  4. print([i+'<->'+j for j in boys  for i in letterGirls[j[0]]]) 
  5. ['clarice<->chris', 'alice<->arnold', 'bernice<->bob',  
  6. 'bernice<->bernod'] 

看看我們構(gòu)建的字典長啥樣

 
 
 
 
  1. letterGirls 
  2. {'a': ['alice'], 'b': ['bernice'], 'c': ['clarice']} 

注意:setdefault()方法,是字典的一個(gè)方法,類似于get()方法,如果鍵不存在于字典中,將會添加鍵并將值設(shè)為默認(rèn)值。如果存在,則返回該字段的值。

語法:

 
 
 
 
  1. dict.setdefault(key, default=None) 

當(dāng)前標(biāo)題:Python輕量級循環(huán)-列表推導(dǎo)式
標(biāo)題路徑:http://www.dlmjj.cn/article/coijoco.html