python 列表推導式

2022-04-11 20:37:01 字數 1987 閱讀 2203

python中有種獨特的語法:推導式,可以將**壓縮到1行,但是不使用也不影響。

有三種:列表、字典、集合(注意沒有元組推導式)

列表推導式

#

1、一行**實現1—100之和(知識點:列表推導式)

print(sum([x for x in range(1, 101)]))

#解釋:

#列表推導式語句用包圍,中先執行for迴圈語句,將每次迴圈取得的值再執行for語句之前的表示式,然後將結果放入列表中,相當於如下語句

li =

for x in range(1, 101):

print

(li)

print

(sum(li))

#列表推導式還支援更複雜的語句,核心是用將生成列表的邏輯封裝起來

#求1-100之內能被4整除,但是不能被5整除的所有數

print([x for x in range(1, 101) if x % 4 == 0 and x % 5 !=0])

#多重迴圈,先執行一次外層迴圈,再迴圈內層遍歷所有元素

li = [a + b for a in

'123

'for b in

'abc']

#輸出['1a

', '

1b', '

1c', '

2a', '

2b', '

2c', '

3a', '

3b', '3c'

]#更多用法

li2 = [k+'

:'+v for k, v in .items()]#輸出

['age:41

', '

name:kobe']

#問題:有兩個列表a和b,找出在a中但不在b中的元素(a有b沒有),在a和b中都存在的元素(ab都有),a和b中不同的元素(a有b沒有,b有a沒有)

a = [1, 2, 3, 4, 5]

b = [3, 4, 5, 6, 7]

#在a中但不在b中的元素(a有b沒有)

li1 = [x for x in a if x not

inb]

print

(li1)

#在a和b中都存在的元素(ab都有)

li2 = [x for x in a if x in

b]print

(li2)

#a和b中不同的元素(a有b沒有,b有a沒有)

li3 = [x for x in a+b if x not

inli2]

print(li3)

字典推導式

#

字典推導式(用花括號{}包圍起來)

dict = #輸出

集合推導式

#

集合推導式(也是用花括號包圍,和字典推導式區別只是在for語句的前面表示式不一樣,沒有:)

s =

print(type(s))

元素推導式(沒有)

#

元組推導式????(既然列表推導式用,字典和集合推導式用{},那元組推導式當然用()了)

#對不起麼有元組推導式,圓括號在python中被用作生成器的語法了

tup = (x for x in [1,2,3])

print

(type(tup))

#輸出:,可以看到是乙個生成器

#如果非要按照上面的規律生成元組,需要顯式的呼叫元組轉換函式tuple()

tup = tuple((x for x in [1,2,3]))

print

(tup)

print

(type(tup))

#輸出:

#(1, 2, 3)

#

python 理解列表推導式以及列表推導式巢狀

所謂列表推導式,就是將乙個可迭代的列表遍歷,將每次遍歷的元素拿出來進行一些操作,並用乙個 括起來,組成乙個新的列表 expression for i in item if condition expression 就是對每乙個元素的具體操作表示式 item是某個可迭代物件的元素,如列表,元組或字串等...

python列表推導式

a 1,2,3,4,5,6,7 將每個元素求平方 加入到b列表中 1.列表解析 b x 2 for x in a print b 2.用map實現 c map lambda x x 2,a print list c 3.用迴圈實現 d for x in a print d 將a中的偶數求立方加入到新...

Python 列表推導式

python中的列表推導式有較好的用途,這裡介紹兩個可能大家會用到的,具體簡單的列表推導式的這裡就不說了 testlist 1,2,3,4 defmul2 x return x 2 print mul2 i for i in testlist 還有一張可以通過在內部加上一些邏輯語句從而對資料進行篩選...