[TOC]
>[success] # 列表推導式
~~~
1. 列表推導式是通過?一?行行來構建你要的列列表, 列列表推導式看起來代碼
簡單. 但是出現錯誤之 后很難排查.
2.推導式是從一個或者多個迭代器快速簡潔地創建數據結構的一種方法。它可以將
循環和條 件判斷結合,從而避免語法冗長的代碼。
~~~
>[danger] ##### 案例
~~~
1.[最終結果(變量) for 變量 in 可迭代對象]
2.[最終結果 for 變量 in 可迭代對象 if 條件]
3.兩層循環
~~~
* 對應第一個公式案例
~~~
lst = [i for i in range(1,15)]
print(lst)
打印結果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
~~~
* 對應第二個公式案例
~~~
lst = [i for i in range(1,101) if i%2==0]
print(lst)
打印結果:
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]
~~~
* 第三種超級無敵兩層循環
~~~
rows = range(1, 4)
cols = range(1,3)
for row in rows:
for col in cols:
print(row, col)
打印結果:
1 1
1 2
2 1
2 2
3 1
3 2
使用列表推到轉換(這種讀法先從最右面的循環開始)
cells = [(row, col) for row in rows for col in cols]
~~~
>[success] # 字典推導式
~~~
1.{ k : v for expression in iterable }
~~~
>[danger] ##### 案例
~~~
word = 'letters'
letter_counts = {letter: word.count(letter) for letter in set(word)}
print(letter_counts)
打印結果:
{'t': 2, 'r': 1, 'e': 2, 's': 1, 'l': 1}
~~~
>[success] # 集合推導式
~~~
1.{expression for expression in iterable }
~~~
>[danger] ##### 案例
~~~
lst = ["馬化騰", "馬化騰", "王建忠", "張建忠", "張建忠", "張雪峰", "張雪峰"]
s = {i for i in lst} # 集合推倒式
print(s)
~~~
>[success] # 生成器推導式
~~~
1.元組是沒有推導式的,圓括號之間的是生成器推導式,它返回的是一個生成器對
象
2.一個生成器只能運行一次。列表、集合、字符串和字典都存儲在內存中,但 是
生成器僅在運行中產生值,不會被存下來,所以不能重新使用或者備份一 個生成
器。
3.列列表推導式比較耗內存. ?一次性加載. ?生成器表達式?幾乎不占?用內存.
使?用的時候才分 配和使?用內存
4. 得到的值不?一樣. 列列表推導式得到的是?一個列列表. ?生成器表達式獲取
的是?一個?生成器.
~~~
>[danger] ##### 案例
~~~
g = (i for i in range(10))
print(list(g))
~~~
- PYTHON-- 基礎
- Python -- 變量、常量、注解
- 算數\比較\賦值\邏輯運算符
- Python -- input 控制臺用戶輸入
- Python -- 流程控制/循環語句
- Python -- 切片
- Python -- 數據類型
- 基礎數據類型
- int -- 數字類型
- str -- 字符類型
- bool -- 布爾類型
- list -- 列表
- type -- 元祖
- dict -- 字典
- set -- 集合
- Python -- 深淺copy
- Python -- 文件的讀寫
- Python -- 函數
- 函數 -- 做參數使用
- 函數 -- 閉包
- 函數 -- 生成器
- 函數 -- 列表推導式
- 案例
- 基礎案例一
- 基礎案例二
- 基礎案例三
- COOKBOOK
- LIST、STR、DICT、TUPLE
- LIST - 列表方法總結
- 一、序列拆分成單獨變量
- 二、* 妙用
- 三、deque- 雙向隊列
- 四、求找到最大或最小的N個元素
- 4.1 heapq-- 簡單使用
- 五、去重并保持列表順序不變
- 六、切片slice
- 七、counter 統計序列中元素次數
- 八、itemgetter 列表套著字典排序
- 九、處理大量的列表數據
- 十、隨機事件處理列表
- DICT - 字典的總結方法
- 一、defaultdict 解決 KeyError
- 二、OrdereDict有序字典
- 三、zip 和 max/min 比較
- IDCT和LIST- 推導式
- 一、LIST 推導式
- 二、字典推到式
- TUPLE-元組
- 一、命名元組
- STR-字符串
- 一、常見的字符串方法
- 二、字符串拆分
- 三、字符串的位置匹配
- 四、字符串替換
- 五、正則大小寫/換行匹配
- 六、對字節類型處理
- 數字、日期、時間處理
- 一、數字的處理
- 二、時間換算
- 2.1 時間運算
- 2.2計算某一時刻上周幾的日期
- 2.2對時間轉換格式優化
- 迭代器和生成器
- 一、iter 迭代器 使用案例
- 二、生成器 yeild
- 三、構建一個反向迭代方法
- 四、實現反正函數構造
- 五、迭代對象切片/跳過元素
- 六、迭代出所有的組合排列
- 七、索引-值迭代序列化
- 八、zip 同時迭代多個序列
- 九、同時循環多個可迭代對象
- 十、yield from 遞歸案例
- 十一、合并序列,并按順序輸出
- 十二、使用 iter 替代 while True
- 操作文件
- 一、處理文件路徑
- 二、檢測文件/獲取文件信息
- 函數
- 一、函數基本案例使用
- 二、匿名函數
- 三、回調函數
- 四、閉包實現一個單個方法類
- 五、函數嵌套回調函數
- 類與對象
- 一、str/repr--讓類字符串表示
- 二、format -- 格式化類的內容
- 三、with -- 上下文管理類
- 四、創建節省內存的類
- 五、將類里面方法變成屬性
- 六、調用父類方法
- 七、擴展子類中的屬性
- 八、創建新的類或者實類屬性
- 九、簡化數據結果,簡化init
- 十、python 接口寫法
- 十一、通過類屬性創建委托訪問
- 十二、__new__重新初始化init
- 十三、通過字符串調用類
- 元編程
- 一、裝飾器
- 1.1 去掉裝飾器修飾
- 1.2 可接受參數裝飾器
- 1.3利用裝飾器對函數參數類型檢查
- 1.4編寫類裝飾器
- 1.5為類方法和靜態方法加裝飾器
- 1.6通過裝飾器給裝飾函數加參數
- 線程和進程