【Python 必会技巧】[i for i in range(1,10)] — 列表解析式,列表中使用 for 循环
生活随笔
收集整理的這篇文章主要介紹了
【Python 必会技巧】[i for i in range(1,10)] — 列表解析式,列表中使用 for 循环
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
經常會看到類似于 [i for i in range(1,10)] 的表達式,這種表達式稱為列表解析(List Comprehensions),類似的還有字典解析、集合解析等等。
列表解析式是將一個列表(實際上適用于任何可迭代對象)轉換成另一個列表的工具。在轉換過程中,可以指定元素必須符合一定的條件,才能添加至新的列表中,這樣每個元素都可以按需要進行轉換。
每個列表解析式都可以重寫為 for 循環,但不是每個 for 循環都能重寫為列表解析式,列表解析比 for 更精簡,運行更快。
基本語法
[expression for iter_val in iterable]
[expression for iter_val in iterable if cond_expr]
列表解析式
舉例說明,將 1-10 每個數乘以 2 放入一個列表:
用 for 循環實現如下:
>>> li = [] >>> for i in range(1, 11):li.append(i*2)>>> print(li) [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]用列表解析式實現如下:
>>> li = [i*2 for i in range(1, 11)] >>> print(li) [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]篩選條件
此外列表解析式還支持添加篩選條件,例如篩選出 i*2>10 的數:
>>> li = [i*2 for i in range(1, 11) if i*2 > 10] >>> print(li) [12, 14, 16, 18, 20]嵌套循環
更復雜一點,嵌套循環也可以轉換成列表解析式,先看一個普通的嵌套循環:
>>> li1 = ['A', 'B', 'C'] >>> li2 = ['1', '2', '3'] >>> li3 = [] >>> for m in li1:for n in li2:li3.append((m,n))>>> print(li3) [('A', '1'), ('A', '2'), ('A', '3'), ('B', '1'), ('B', '2'), ('B', '3'), ('C', '1'), ('C', '2'), ('C', '3')]列表解析式實現如下:
>>> li1 = ['A', 'B', 'C'] >>> li2 = ['1', '2', '3'] >>> li3 = [(m,n) for m in li1 for n in li2] >>> print(li3) [('A', '1'), ('A', '2'), ('A', '3'), ('B', '1'), ('B', '2'), ('B', '3'), ('C', '1'), ('C', '2'), ('C', '3')]字典解析式
普通 for 循環:
>>> a = {'language1':'python', 'language2':'java','language3':'c'} >>> b = {} >>> for key, value in a.items():if key == 'language1':b[key] = value>>> print(b) {'language1': 'python'}用字典解析式實現如下:
>>> a = {'language1':'python', 'language2':'java','language3':'c'} >>> b = {key: value for key, value in a.items() if key == 'language1'} >>> print(b) {'language1': 'python'}集合解析式
普通 for 循環:
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> b = set() # 創建一個空集合 >>> for i in a:if i > 5:b.add(i)>>> print(b) {6, 7, 8, 9, 10}用集合解析式實現如下:
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> b = {i for i in a if i > 5} >>> print(b) {6, 7, 8, 9, 10}總結
以上是生活随笔為你收集整理的【Python 必会技巧】[i for i in range(1,10)] — 列表解析式,列表中使用 for 循环的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 印度大国梦碎了一地?发展了30年,人均G
- 下一篇: Python3 爬虫学习笔记 C11【数