python中的列表生成式 生成器和字典推導式

2021-10-07 13:03:32 字數 1737 閱讀 9995

1、列表生成式

舉乙個簡單的例子,輸出1-20之間的奇數。

my_list =

for i in

range(21

):if i %2==

1:print

(my_list)

# [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

print

([i for i in

range(21

)if i %2==

1])# [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

更複雜一些的邏輯(將輸出的1-20之間的奇數分別取平方)

def

handel_item

(item)

:return item * item

print

([handel_item(i)

for i in

range(21

)if i %2==

1])# [1, 9, 25, 49, 81, 121, 169, 225, 289, 361]

2、生成器

首先來說,將列表生成式中的,換成(),就變成了乙個生成器。

my_list =

(i for i in

range(21

)if i %2==

1)print

(type

(my_list)

)print

(my_list)

# # at 0x0000022bdaba64c8>

可通過for迴圈輸出每個元素

my_list =

(i for i in

range(21

)if i %2==

1)for i in my_list:

print

(i)#1 3 5 7 9 11 13 15 17 19

生成器和列表表示式之間的轉換

my_list =

(i for i in

range(21

)if i %2==

1)print

(my_list)

new_list =

list

(my_list)

print

(new_list)

# at 0x000002d5d63d64c8>

# [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

還可以通過yield構造生成器,後續再講解。

3、字典推導式

交換鍵值順序

my_dict =

reverse_dice =

print

(reverse_dice)

#

補充:集合推導式

my_set =

print

(my_set)

print

(type

(my_set))#

#

雖然直接用my_set = set(my_dict.keys())也行,但靈活性不高,也不像字典推導式那樣可以新增任意邏輯。

python中列表生成式

今天看書發現乙個很好玩的函式 列表生成式 格式如下 function x for x in itr x 列表生成式的收尾是列表的方括號。它用到乙個可以迭代的物件 iter x 將 iter x 的每乙個值傳入func x 中,用返回值建立乙個新列表。eg data list 1,2,3,4,5 li...

python中的列表生成式

1.列表生成式 列表生成式即list comprehensions,是python內建的非常簡單卻強大的可以用來建立列表的生成式.1.將字串s 51 5000 10000 賦值給多個變數 s 51 5000 10000 li for i in s.split k,a,b li print li pr...

Python中的列表生成式

前言 在python語言中,所謂列表生成式,就是說可以生成list列表的表示式,是python內建的一種強大的功能,有時候我們需要較複雜的函式來實現某個功能,而列表生成式可以很簡單的寫出來。今天我們主要來講一下列表生成式的應用案例。案例一 將字串中的內容拆開,轉換成整型 首先來看一下不使用列表生成式...