python中有種獨特的語法:推導式,可以將**壓縮到1行,但是不使用也不影響。
有三種:列表、字典、集合(注意沒有元組推導式)
列表推導式
#1、一行**實現1—100之和(知識點:列表推導式)
print(sum([x for x in range(1, 101)]))
#解釋:
#列表推導式語句用包圍,中先執行for迴圈語句,將每次迴圈取得的值再執行for語句之前的表示式,然後將結果放入列表中,相當於如下語句
li =
for x in range(1, 101):
(li)
(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]
(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])
(type(tup))
#輸出:,可以看到是乙個生成器
#如果非要按照上面的規律生成元組,需要顯式的呼叫元組轉換函式tuple()
tup = tuple((x for x in [1,2,3]))
(tup)
(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 還有一張可以通過在內部加上一些邏輯語句從而對資料進行篩選...