python 学习汇总29:各种推导式( tcy)
生活随笔
收集整理的這篇文章主要介紹了
python 学习汇总29:各种推导式( tcy)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
python的各種推導式(輕量級循環) 2018 / 6 / 16 ?
1.推導式用途:
推導式是從一個數據序列構建一個新的數據序列的結構體,類似于for 循環
列表/字典/集合推導式優于 map/filter ?
?
?
2.基本格式 v = ( out_exp_res for out_exp1 in sequence1 if condition1 for out_exp2 in sequence2 if condition2 ...... ) variable = [(out_exp_res) for out_exp in input_list if out_exp == 2]參數: # out_exp_res:如列表生成元素表達式(可以是有返回值的函數) # for out_exp in input_list: 迭代input_list將out_exp傳入out_exp_res表達式中。 # if out_exp == 2: 條件表達式?
?
?
使用說明: 1)生成器表達式由圓括號包圍,列表解析由方括號包圍 2)表達式最外部的符號為(),[],{:},{,}依次生成迭代器,列表,字典,集合; 3)'(out_exp_res)'外邊的符號為(,), [], {:}, {,} 依次生成的元素類別為元祖,列表,字典,集合 4) 一個元素可不加符號,多于2個必加符號?
?
2.1.()生成器表達式 ? # 如果生成器出現在一個函數中,則允許使用子句和表達式geners = (i for i in range(10) if i % 3 is 0)#type 'generator' for i in geners: print i # 0 3 6 9?
?
2.2.[]列表推導式 def add(x, y): return x + ya = [{x: add(y,1000)} for x in range(10) for y in range(100) if x % 5 == 0 and y % 50 == 0] # [{0:1000},{0:1050},{5:1000}, {5: 1050}] 2.3.{:}字典推導式 d = {'a': 1, 'b': 2, 'C': 3} d2 = {k.lower(): d.get(k.lower(), 0) + d.get(k.upper(), 0) for k in d1.keys() if k.lower() in ['a', 'b']} # 可以多行書寫# 快速更換key和value d2 = {v: k for k, v in d.items()} 2.4.{ ,}集合推導式 s = {x for x in [1, 1, 2]} 3.實例 #創建一個將被立即傳遞給函數的迭代器: obj_total = sum(obj.count for obj in list_all_objects()) #循環次數: seq1 = 'abc';seq2 = (1,2,3) [(x, y) for x in seq1 for y in seq2] #列表表達式循環9次;能用方括號;大括號數據順序有些異常,不要用 # [('a', 1), ('a', 2), ('a', 3), # ('b', 1), ('b', 2), ('b', 3), # ('c', 1), ('c', 2), ('c', 3)] [(x, y) for i1, x in enumerate(seq1) for i2, y in enumerate(seq2) if i1 == i2] # [('a', 1), ('b', 2), ('c', 3)]?
?
總結
以上是生活随笔為你收集整理的python 学习汇总29:各种推导式( tcy)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【成长笔记】
- 下一篇: websocket python爬虫_p