python列表解析

2021-07-04 09:38:39 字數 2589 閱讀 1712

列表解析是乙個列表對映出另乙個列表,它的基本形式是乙個方括號裡面包含乙個for語句對乙個iterable物件迭代

[expression for target1 in iterable1 [if condition1]...

for targetn in iterablen [if conditionn] ]

上面是列表解析中,任意數量巢狀的for迴圈同時關聯可選的if 測試,其中if 表示測試語句是可選的,如果沒有的話,就是我們上面的例子,注意for上下之間表示的是乙個巢狀關係。

[python]view plain

copy

>>> [(x,y) 

forx 

inrange(5) 

ifx % 2==

0for

y in

range(5) 

ify %[(0

, 1), (0, 

3), (2, 

1), (2, 

3), (4, 

1), (4, 

3)] 

map,lambda,filter的組合同樣會達到乙個進行測試的效果,但是如何實現巢狀我現在不太清楚

[python]view plain

copy

>>> list(map((

lambda

x:x**

2),filter((

lambda

x:x%2==

0),range(

10))))  

[0, 4, 

16, 

36, 

64]  

map函式會根據提供的函式對指定序列做對映。

map函式的定義:

map(function, sequence[, sequence, ...]) -> list

通過定義可以看到,這個函式的第乙個引數是乙個函式,剩下的引數是乙個或多個序列,返回值是乙個集合。

function可以理解為是乙個一對一或多對一函式,map的作用是以引數序列中的每乙個元素呼叫function函式,返回包含每次function函式返回值的list。

比如要對乙個序列中的每個元素進行平方運算:

map(lambda x: x ** 2, [1, 2, 3, 4, 5])

返回結果為:

[1, 4, 9, 16, 25]

在引數存在多個序列時,會依次以每個序列中相同位置的元素做引數呼叫function函式。

比如要對兩個序列中的元素依次求和。

map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])

map返回的list中第乙個元素為,引數序列1的第乙個元素加引數序列2中的第乙個元素(1 + 2),

list中的第二個元素為,引數序列1中的第二個元素加引數序列2中的第二個元素(3 + 4),

依次類推,最後的返回結果為:

[3, 7, 11, 15, 19]

當函式為none時,操作和zip相似:

map(none, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])

返回結果為:

[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]

filter函式會對指定序列執行過濾操作。

filter函式的定義:

filter(function or none, sequence) -> list, tuple, or string

function是乙個謂詞函式,接受乙個引數,返回布林值true或false。

filter函式會對序列引數sequence中的每個元素呼叫function函式,最後返回的結果包含呼叫結果為true的元素。

返回值的型別和引數sequence的型別相同

比如返回序列中的所有偶數:

def is_even(x):

return x & 1 != 0

filter(is_even, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

返回結果為:

[1, 3, 5, 7, 9]

reduce函式,reduce函式會對引數序列中元素進行累積。

reduce函式的定義:

reduce(function, sequence[, initial]) -> value

function引數是乙個有兩個引數的函式,reduce依次從sequence中取乙個元素,和上一次呼叫function的結果做引數再次呼叫function。

第一次呼叫function時,如果提供initial引數,會以sequence中的第乙個元素和initial作為引數呼叫function,否則會以序列sequence中的前兩個元素做引數呼叫function。

reduce(lambda x, y: x + y, [2, 3, 4, 5, 6], 1)

結果為21(  

(((((1+2)+3)+4)+5)+6)  

) reduce(lambda x, y: x + y, [2, 3, 4, 5, 6])

結果為20

python 列表解析

m 1,2,3 4,5,6 7,8,9 col2 row 1 for row in m 獲取列表m的每個元素的第二個元素的值組成的列表 print col2 print row 1 1 for row in m 獲取列表m的每個元素的第二個元素 1的值組成的列表 print row 1 for ro...

Python列表解析

語法 1.expression for iter val in iterable 2.expression for iter val in iterable if cond expr l i 2 for i in range 1,11 print l 1,4,9,16,25,36,49,64,81,...

python 列表解析

列表解析 list comprehensions 表示式 expression for iter val in iterable if cond expr print x,y for x in 1 2 for y in 3 4 print x,y for x in 1 2 for y in 3 x ...