1 列表生成式和生成器
from numpy import random
a = random.random(10000)
lst = []
for i in a:
lst.append(i * i) # 不推薦做法
lst = [i * i for i in a] # 使用列表生成式
gen = (i * i for i in a) # 生成器更節省內存
2 字典推導式創建子集
a = {'apple': 5.6, 'orange': 4.7, 'banana': 2.8}
da = {key: value for key, value in a.items() if value > 4.0}
print(da) # {'apple': 5.6, 'orange': 4.7}
3 Key使用itemgetter多字段排序
from operator import itemgetter
a = [{'date': '2019-12-15', 'weather': 'cloud'},
{'date': '2019-12-13', 'weather': 'sunny'},
{'date': '2019-12-14', 'weather': 'cloud'}]
a.sort(key=itemgetter('weather', 'date'))
print(a)
# [{'date': '2019-12-14', 'weather': 'cloud'}, {'date': '2019-12-15', 'weather': 'cloud'}, {'date': '2019-12-13', 'weather': 'sunny'}]
4 Key使用itemgetter分組
from operator import itemgetter
from itertools import groupby
a.sort(key=itemgetter('weather', 'date')) # 必須先排序再分組
for k, items in groupby(a, key=itemgetter('weather')):
print(k)
for i in items:
print(i)
5 sum類聚合函數與生成器
Python中的聚合類函數sum,min,max第一個參數是iterable類型,一般使用方法如下:
a = [4,2,5,1]
sum([i+1for i in a]) # 16
使用列表生成式[i+1 for i in a]創建一個長度與a一樣的臨時列表,這步完成后,再做sum聚合。
試想如果你的數組a長度是百萬級,再創建一個這樣的臨時列表就很不劃算,最好是一邊算一邊聚合,稍改動為如下:
a = [4,2,5,1]
sum(i+1for i in a) # 16
此時i+1 for i in a是(i+1 for i in a)的簡寫,得到一個生成器(generator)對象,如下所示:
In [8]:(i+1for i in a)
OUT [8]: at 0x000002AC7FFA8CF0>
生成器每迭代一步吐出(yield)一個元素并計算和聚合后,進入下一次迭代,直到終點。
6 ChainMap邏輯上合并多個字典
dic1 = {'x': 1, 'y': 2 }
dic2 = {'y': 3, 'z': 4 }
merged = {**dic1, **dic2} # {'x': 1, 'y': 3, 'z': 4}
修改merged['x']=10,dic1中的x值不變
ChainMap只在邏輯上合并,在內部創建了一個容納這些字典的列表。
from collections import ChainMap
merged = ChainMap(dic1,dic2)
print(merged)
# ChainMap({'x': 1, 'y': 2}, {'y': 3, 'z': 4})
使用ChainMap合并字典,修改merged['x']=10,dic1中的x值審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
內存
+關注
關注
9文章
3210瀏覽量
76376 -
生成器
+關注
關注
7文章
322瀏覽量
22715 -
python
+關注
關注
57文章
4876瀏覽量
90037
發布評論請先 登錄
相關推薦
熱點推薦
六軸驅動,如何一步到位?TMCM-6214 的多軸控制!
多軸運動控制,聽起來就讓人頭大:布線像蜘蛛網、編程像天書、控制柜擠得像沙丁魚罐頭。每增加一個軸,線纜多一堆,代碼量蹭蹭漲,空間還得精打細算。一個模塊搞定六個軸有沒有一個模塊能把
C語言函數指針的六個高級的應用場景
函數指針是一種非常強大的編程工具,它可以讓我們以更加靈活的方式編寫程序。在本文中,我們將介紹 6 個函數指針的高級應用場景,并貼出相應的代碼案例和解釋。
回調函數
回調函數是指在某個事件發生時被
發表于 01-04 12:25
C語言的printf基本用法介紹
個小數。f 是 float 的簡寫。
除了這些,printf 支持更加復雜和優美的輸出格式,考慮到讀者的基礎暫時不夠,我們將在《C語言數據輸出大匯總以及輕量進階》一節中展開講解。
我們把代碼補充完整
發表于 11-12 07:04
?CDC204 3.3V六路反相器/時鐘驅動器技術文檔總結
CDC204 包含六個獨立的逆變器。該器件執行布爾函數 Y = A\。它專為開關輸出之間需要低偏斜的應用而設計。
CDC204 的特點是從 T ~一個~ = 25°C 至 70°C。
Linux基礎命令的進階用法
凌晨2點,正在熟睡的你被電話驚醒:"線上服務響應超時,用戶大面積投訴!" 你匆忙打開電腦,SSH 登錄服務器,面對滿屏的進程和日志,腦子一片空白——從哪里開始排查?用什么命令?怎么快速定位問題?
termux調試python猜數字游戲
用termux做一個猜數字游戲
下面是在Termux中創建猜數字游戲的步驟及完整實現方案,結合Python實現(最適配Termux環境):
? 一、環境準備(Termux基礎配置)
1.
發表于 08-29 17:15
LP8863-Q1 具有六個 150 mA 通道的汽車顯示 LED 背光驅動器技術手冊
LP8863-Q1 是一款帶有升壓控制器的汽車高效 LED 驅動器。六個高精度電流吸收器支持相移,相移可根據使用的通道數自動調整。電流吸收器亮度可以通過 SPI 或 I2C 接口單獨和全局控制;亮度
SN74AHCT04六路反相器技術解析與應用指南
Texas Instruments SN74AHCT04六路逆變器包含六個獨立的逆變器并執行布爾函數Y = A。Texas Instruments SN74AHCT04具有TTL輸入電平,允許從3.3V向上轉換到5V。
Altium Designer PCB設計高級進階
對PCB設計的高級進階的內容進行相關的介紹
純分享貼,有需要可以直接下載附件獲取完整資料!
(如果內容有幫助可以關注、點贊、評論支持一下哦~)
發表于 04-27 16:40
python入門圣經-高清電子書(建議下載)
和Pygal 等強大的Python 庫和工具介紹,以及列表、字典、if 語句、類、文件與異常、代碼測試等內容;
第二部分將理論付諸實踐,講解如何開發三個項目,包括簡單的Python
發表于 04-10 16:53
函數指針的六個常見應用場景
函數指針在嵌入式開發中有著廣泛的應用,它讓代碼更加靈活,減少冗余,提高可擴展性。很多時候,我們需要根據不同的情況動態調用不同的函數,而函數指針正是實現這一需求的重要工具。本文將介紹六個常見的函數指針
零基礎入門:如何在樹莓派上編寫和運行Python程序?
在這篇文章中,我將為你簡要介紹Python程序是什么、Python程序可以用來做什么,以及如何在RaspberryPi上編寫和運行一個簡單的Pyth
六個Python進階用法介紹
評論