1. 程式人生 > >python中的列表生成式 | 字典生成式

python中的列表生成式 | 字典生成式

1.列表生成式

列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。

舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))

>>> list(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]

寫列表生成式時,把要生成的元素x * x放到前面,後面跟for迴圈,就可以把list創建出來,十分有用,多寫幾次,很快就可以熟悉這種語法。

for迴圈後面還可以加上if判斷,這樣我們就可以篩選出僅偶數的平方:

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

還可以使用兩層迴圈,可以生成全排列:

>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

三層和三層以上的迴圈就很少用到了。

運用列表生成式,可以寫出非常簡潔的程式碼。例如,列出當前目錄下的所有檔案和目錄名,可以通過一行程式碼實現:

>>> import os # 匯入os模組,模組的概念後面講到
>>> [d for d in os.listdir('.')] # os.listdir可以列出檔案和目錄 ['.emacs.d', '.ssh', '.Trash', 'Adlm', 'Applications', 'Desktop', 'Documents', 'Downloads', 'Library', 'Movies', 'Music', 'Pictures', 'Public', 'VirtualBox VMs', 'Workspace', 'XCode']

for迴圈其實可以同時使用兩個甚至多個變數,比如dictitems()可以同時迭代key和value:

>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> for k, v in d.items():
...     print(k, '=', v)
...
y = B
x = A
z = C

因此,列表生成式也可以使用兩個變數來生成list:

>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> [k + '=' + v for k, v in d.items()]
['y=B', 'x=A', 'z=C']

最後把一個list中所有的字串變成小寫:

>>> L = ['Hello', 'World', 'IBM', 'Apple']
>>> [s.lower() for s in L]
['hello', 'world', 'ibm', 'apple']

2.字典生成式

d = {key: value for (key, value) in iterable}

其中iterable是一個可迭代的物件,比如list

org_dict = {'x': 1, 'y': 2, 'z': 3}
new_dict = {v: k for k,v in some_dict.items()} 

參考資料來源於:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431779637539089fd627094a43a8a7c77e6102e3a811000

相關推薦

Python列表(list)、字典(dict)排序的程序

self. 能夠 網站 軟件 too 字段 tool 生成 ted Python3 中的排序,在 Sorting HOW TO 中已經講得很清楚了。來個實際的例子,對下面的這個 list 依據創建時間排序: pages = [{‘title‘: ‘十年學會程序設計‘, ‘

python列表 元組 字典 集合的區別

  列表 元組 集合 字典 英文 list tuple set dict 定義 定義[],資料之間使用,分割 定義

python列表生成 | 字典生成

1.列表生成式 列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。 舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))

函數 三元表達 列表生成 字典生成 生成器表達

生成器 next 返回 生成 一個 Go pre 而是 def 1、三元表達式 針對 if 條件判斷的簡寫 可以比較下比如: def max2(x,y): if x > y: return x else: retur

python 列表推導的練習

print("~"*100) # print("python中的列表推導式的練習") # # list = [ i for i in range(1,10)] # print(list) # list = [i*i for i in range(1,10)] # print

Python特殊函數和表達 filter,map,reduce,lambda

result before positive ply sequence items closed 默認 hid 1. filter 官方解釋:filter(function or None, sequence) -> list, tuple, or string Re

python列表字典等必須要註意的事項

col mos 輸出 lin 存儲 int file for projects 1.python中的列表不能夠遍歷刪除 1 #python列表我們不能夠遍歷刪除 2 li = [1, 2, 3, 4, 5, 6] 3 for i in range(len(li)):

python常用的正則表達符號

birt name eee dot 列表 數字 lin bbc dict ‘.‘ 默認匹配除\n之外的任意一個字符,若指定flag DOTALL,則匹配任意字符,包括換行 ‘^‘ 匹配字符開頭,若指定flags MULTILINE,這種也可以匹配上(r"^

Python列表,元組,字典,集合的區別

參考文件https://blog.csdn.net/Yeoman92/article/details/56289287 理解Python中列表,元組,字典,集合的區別 列表,元組,字典,集合的區別是python面試中最常見的一個問題。這個問題雖然很基礎,但確實能反映出面試者的基礎水平。 1.列表(Lis

Python列表,元組,字串,字典型別的區別

1.Python中的list列表是可以原地修改的; 也就是對list修改後,還在原來的記憶體位置上。 >>> a=[1,2,9,8,7] >>> id(a) 55947912L >>> b=[4,5,6] &

python列表,元祖,字典,集合的區別

一.前言 一直想寫寫這四種類型的相同點,與不同點在哪裡,以及在什麼情況下應該使用哪種型別。無奈水平不夠,怕寫出來不夠深刻,所以一直拖著。今天想了想還是寫出來吧,如果以後還有新的見解或者技巧我會繼續更上去的。 二.列表(list) 具有以下特點: 1.可以用list()函式

python列表、元組、字典和集合

列表、元組、字典和集合      1.列表和元組。 Python中列表list和元組tuple都是表示元素序列甚至都不要求表示的元素型別一樣。都是按照下標進行存取操作,最大的不同是元組裡面的值確定之後,不能修改。 列表的建立:  Empty_list=[]空列表。 Week

python列表字典排序

Python 列表內建 list.sort() 方法實現原地排序,同時 Python 還提供 sorted() 函式返回對可迭代物件排序後的新列表。 首先匯入可能需要的模組: # coding:utf-8 import operator import collection

python列表字典和map,lambda函式的操作淺析新

一:一些簡單的操作列表切片a=[1,2,3,4,5,6,7,8] a[1:] [2, 3, 4, 5, 6, 7, 8] a[::-1] [8, 7, 6, 5, 4, 3, 2, 1] a[2:4] [3, 4] a[::-2] [8, 6, 4, 2] a[-3:-1]

python列表、元組及字典的排序

0 序言 首先介紹,在Python排序中,常用的兩個排序函式是sort()和sorted()。在講列表、元組和字典的排序之前,有必介紹這兩個函式。下面基於Python3,檢視該函式的引數值。(Python2和Pyhton3對這兩函式的引數設定有所差別) 在P

Python列表字典的區別以及適用的場景

從應用場景來說: list 是記錄簡單有序資料的,就是一對一的那種,可以理解為一維陣列. 比如你記錄貓的名字,就可以用list = ['第1只貓名字','第2只貓名字'] ... 比如你記錄飯店的菜品,就可以用list = ['第1個菜紅燒肉','第2個菜紅燒大腸',第3個菜'紅燒排骨'] ... 這裡的記

Python列表字典,集合常用方法彙總

關於字典的方法: 一.不支援下標,不支援排序。 二.建立字典的方法:    1.手動建立字典 dict1 = {},dict3=dict()                              dict4 = dict(name='gui',age=30)  

python列表,元祖,字典,集合區別和使用方法

列表是方括號 [],元組是圓括號 (),字典是花括號 {}。 列表:可重複,型別可相同可不同,有序 ,用[]表示,用逗號分隔     索引:   n = 0,1,2....-1 list [n]     新增:1. 在末尾新增 list.append ( ' new ' )

Python列表、元組、字典、集合與字串,相關函式,持續更新……

> 本篇部落格為博主第一次學 Python 所做的筆記(希望讀者能夠少點浮躁,認真閱讀,平心靜氣學習!) **補充:** - 列表、元組和字串共同屬性: - 屬於有序序列,其中的元素有嚴格的先後順序 - 都支援雙向索引,索引範圍 [ -L, L-1 ] ,L -- 表示列表、元組和字串的長度(分正向索引

python經常使用的字典內建函數

哈希 popu blog default app ping 復制 none you 1、len(mapping) 返回映射的長度(鍵-值對的個數) 2、hash(obj) 返回o