python3中的列表生成式

2021-09-22 01:59:03 字數 2414 閱讀 6783

列表生成式是python內建的建立列表的一種方法。

如果要生成列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我們可以使用list(range(1,11)).

但是如果要生成[1x1, 2x2, 3x3, …, 10x10]怎麼辦?

第一種方法:使用迴圈

for x in

range(1

,11):

但是迴圈太繁瑣,使用列表生成式僅僅用一句話就可以替代上面的迴圈:

[x*x for x in

range(1

,11)]

for 迴圈後面也可以跟上判斷,這樣我們可以篩選不同條件下的引數,例如求偶數或者奇數的和

[x*x for x in

range(1

,11)if x %2==

0]#求偶數兩兩乘積

[x*x for x in

range(1

,11)if x %2==

1]#求奇數數兩兩乘積

#計算結果[4

,16,36

,64,100][

1,9,

25,49,

81]

在for迴圈後面也可以在跟乙個for迴圈,生成全排列:

[x + y for x in

'abc'

for y in

'123'

]#結果

['a1'

,'a2'

,'a3'

,'b1'

,'b2'

,'b3'

,'c1'

,'c2'

,'c3'

]

三層或者三層以上的迴圈很少用到列表生成式

for 迴圈可以同時對兩個甚至多個變數進行迴圈,因此列表生成式可以使用兩個變數生成lsit:

mydict =

[x +

'='+ y for x,y in mydict.items()]

#結果[

'c=5'

,'b=2'

,'a=1'

]

使用列表生成式可以把所有的字串變為小寫:

l =

['hello'

,'world'

,'ibm',]

[s.lower(

)for s in l]

#結果[

'hello'

,'world'

,'ibm'

,]

但是如果列表中的元素並不全是字串,使用lower時就會出錯,

l =

['hello'

,'world',18

,][s.lower(

)for s in l]

#結果traceback (most recent call last)

: file ""

, line 1,in

[s.lower(

)for s in l]

file ""

, line 1,in

[s.lower(

)for s in l]

attributeerror:

'int'

object has no attribute 'lower'

因此需要對元素型別進行判斷,對元素的型別我們可以使用type()或者isinstance,在此建議使用isinstance:

isinstance用法如下:

li =

['ss',1

,1.0

]isinstance

(li[0]

,str

)isinstance

(li[1]

,int

)isinstance

(li[2]

,int

)#結果

true

true

false

因此當出現非字串型別的元素時,可以使用isinstance判斷:

l =

['hello'

,'world',18

,][s.lower(

)for s in l if

isinstance

(s,str)]

[s.lower(

)for s in l if

type

(s)==

str]

#結果[

'hello'

,'world',]

['hello'

,'world'

,]

參考:自用

python3 列表生成式

列表生成式即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 但如...

python3 列表生成式

列表生成式即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 但...

python3 之死扣迭代和列表生成式

python3 之迭代和列表生成式 本文章是講解列表迭代和列表生成式的 coding utf 8 import collections.abc author 京哥 迭代 也稱為遍歷,是迴圈獲取每乙個元素的值 迭代 也稱為遍歷,迴圈獲取每乙個元素 for i in tom jack alice pri...