Python itertools模塊的groupby函數介紹

itertools.groupby?是 Python 標準庫?itertools?模塊中的一個函數,它的主要功能是對可迭代對象中相鄰的相同元素進行分組。

itertools.groupby(iterable, key=None)?函數

作用:

將連續的(相鄰的)相同元素分組,返回?(key, group)?的迭代器。

導入方式:
import itertools
參數說明:
  • iterable:要進行分組的可迭代對象。

  • key(可選):一個函數,用來指定分組依據;默認是元素本身。

注意事項:
  • 它?不會自動排序或打亂順序,只會對連續相同 key 的元素進行分組。

  • 所以通常配合?sorted()?使用,才能對非連續相同元素也正確分組。

基礎示例代碼:

import itertoolsdata = [1, 1, 2, 2, 2, 3, 1]for key, group in itertools.groupby(data):print(f"{key} -> {list(group)}")

輸出:

1 -> [1, 1]
2 -> [2, 2, 2]
3 -> [3]
1 -> [1]

注意最后又出現了一個?1 -> [1],因為?groupby?是按“連續”的來分組的!

搭配?key?使用示例:

比如我們對一組字符串按首字母分組:

data = ['apple', 'apricot', 'banana', 'blueberry', 'cherry']# 需要先排序,否則相同首字母不連續
data_sorted = sorted(data, key=lambda x: x[0])for key, group in itertools.groupby(data_sorted, key=lambda x: x[0]):print(f"{key} -> {list(group)}")

輸出:

a -> ['apple', 'apricot']
b -> ['banana', 'blueberry']
c -> ['cherry']

實用小技巧:

你可以用?groupby?來做各種分組統計,比如:

  • 按類型分組處理對象;

  • 對已排序的日志數據按日期分組;

  • 對字符流按重復字符分組等等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/901185.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/901185.shtml
英文地址,請注明出處:http://en.pswp.cn/news/901185.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python實例題:使用Python生成分形圖片

目錄 Python實例題 題目 題目分析 需求理解 關鍵知識點 實現思路分析 代碼實現 代碼解釋 mandelbrot 函數: 設置復平面區域和圖像參數: 計算分形數據: 繪圖展示: 運行思路 Python實例題 題目 使用Python生成分形圖…

系統編程1(進程的概念與原理)

進程的概念與原理 計算機組成部分一般遵循馮諾依曼結構,也就是由控制器、運算器、存儲器、輸入設備、輸出設備五個部分組成。 ? 程序的編譯 一般在編寫出程序之后,并不能直接運行,而是需要把程序通過編譯器進行編譯,生成可執行…

《Vue Router實戰教程》5.嵌套路由

歡迎觀看《Vue Router 實戰(第4版)》視頻課程 嵌套路由 一些應用程序的 UI 由多層嵌套的組件組成。在這種情況下,URL 的片段通常對應于特定的嵌套組件結構,例如: 通過 Vue Router,你可以使用嵌套路由配置…

使用Python解決Logistic方程

引言 在數學和計算機科學中,Logistic 方程是描述人口增長、傳播過程等現象的一種常見模型。它通常用于表示一種有限資源下的增長過程,比如動物種群、疾病傳播等。本文將帶領大家通過 Python 實現 Logistic 方程的求解,幫助你更好地理解這一經典數學模型。 1.什么是 Logist…

《從零搭建Vue3項目實戰》(AI輔助搭建Vue3+ElemntPlus后臺管理項目)零基礎入門系列第十二篇(完結篇):數據統計功能實現

🤟致敬讀者 🟩感謝閱讀🟦笑口常開🟪生日快樂?早點睡覺 📘博主相關 🟧博主信息🟨博客首頁🟫專欄推薦🟥活動信息 文章目錄 《從零搭建Vue3項目實戰》(AI輔助…

研究嵌入式軟件架構時遇到的初始化堆棧溢出問題

文章目錄 2025年4月10日新增分析PC寄存器指針值排查問題map文件設計到的知識點1. **.bss 段(Block Started by Symbol)**2. **.data 段**3. **.text 段**4. **.heap 段**5. **.stack 段**6. **.rodata 段(只讀數據段)**7. **.init…

軟件架構評估兩大法:ATAM 和 SAAM 的對比與實踐

架構權衡分析方法(ATAM)和軟件架構分析方法(SAAM)是軟件架構評估領域中非常重要的兩種方法,以下為你詳細介紹: 一、架構權衡分析方法(ATAM) 1.背景與起源:ATAM 是由卡耐…

Python爬蟲-爬取全球股市漲跌幅和漲跌額數據

前言 本文是該專欄的第52篇,后面會持續分享python爬蟲干貨知識,記得關注。 本文中,筆者將基于Python爬蟲,實現批量采集全球股市行情(亞洲,美洲,歐非,其他等)的各股市“漲跌幅”以及“漲跌額”數據。 具體實現思路和詳細邏輯,筆者將在正文結合完整代碼進行詳細介紹。…

電流互感器的兩相星形接線的建模與仿真

微?“電擊小子程高興的MATLAB小屋”獲取巨額優惠 1.模型簡介 本仿真模型基于MATLAB/Simulink(版本MATLAB 2016Rb)軟件。建議采用matlab2016 Rb及以上版本打開。(若需要其他版本可聯系代為轉換) 2.仿真模型 3.仿真結果 3.1一次…

詳解 kotlin 相對 Java 特有的關鍵字及使用

文章目錄 1. val 和 var2. fun3. when4. is 和 !is5. lateinit6. by7. reified8. companion 本文首發地址:https://h89.cn/archives/366.html 最新更新地址:https://gitee.com/chenjim/chenjimblog Kotlin 在兼容Java的基礎上,引入了許多特有…

國標GB28181視頻平臺EasyCVR如何搭建汽車修理廠遠程視頻網絡監控方案

一、背景分析 近年我國汽車保有量持續攀升,與之相伴的汽車保養維修需求也逐漸提高。隨著社會經濟的發展,消費者對汽車維修服務質量的要求越來越高,這使得汽車維修店的安全防范與人員管理問題面臨著巨大挑戰。 多數汽車維修店分布分散&#…

linux RCU技術

RCU(Read-Copy-Update)是Linux內核中的一種同步機制,用于在多核處理器環境中實現無鎖讀取和延遲更新。Linux RCU(Read-Copy-Update)技術通過一種高效的同步機制來處理并發沖突,確保在多核環境中讀者和寫者對…

【筆記ing】AI大模型-02開發環境搭建

按實驗需求合理選用實例規格,一般:模型開發階段:使用最低算力2U8GB CPU。訓練或推理階段:切換至GPU規格,用完及時關閉算力環境,且切回最低算力規格。 每次實驗結束手動關閉實例。使用ModelArts公有云資源。…

Python——numpy測試題目

題目: 生成一個2行3列隨機整數二維數組a使用Numpy方法對(1)中數組a進行整體求積使用Numpy方法對(1)中數組a進行求每列最大值索引定義一個NumPy一維數組 b,元素為 1 到 10 的整數獲取(4&#x…

系分論文《論面向服務開發方法在設備租賃行業的應用》

系統分析師論文系列 【摘要】 2022年5月,我司承接某工程機械租賃企業"智能租賃運營管理平臺"建設項目,我作為系統分析師主導系統架構設計。該項目需整合8大類2000余臺設備資產,覆蓋全國15個區域運營中心與300家代理商,實…

Unity UI中的Pixels Per Unit

Pixels Per Unit在圖片導入到Unity的時候,將圖片格式設置為Sprite的情況下會出現,其意思是精靈中的多少像素對應世界中的一個單位,默認是100 1. 對于在世界坐標中 在世界坐標中,一般對于Sprite的應用是Sprite Renderer組件 使…

Boost Graph Library (BGL) 介紹與使用示例

Boost Graph Library (BGL) 介紹與使用示例 Boost Graph Library (BGL) 是 Boost 庫中用于圖論計算的模塊,提供了處理圖數據結構的通用接口和多種圖算法實現。 BGL 主要特性 提供多種圖表示方式:鄰接表、鄰接矩陣等包含常用圖算法:DFS、BF…

opencv(C++)操作圖像像素

文章目錄 添加噪點的案例圖像像素值1、訪問圖像屬性2、像素訪問方法 at灰度圖像彩色圖像 3、OpenCV 的向量類型4、 圖像傳遞方式 The cv::Mat_ 類1、作用及優點2、使用 cv::Mat_ 簡化像素訪問 用指針掃描圖像背景算法案例原理1. 圖像數據存儲的基本結構2、行填充(Pa…

Python實現貪吃蛇一

貪吃蛇是一款經典的小游戲,最近嘗試用Python實現它。先做一個基礎版本實現以下目標: 1、做一個按鈕,控制游戲開始 2、按Q鍵退出游戲 3、右上角顯示一個記分牌 4、隨機生成一個食物,蛇吃到食物后長度加一,得10分 5、蛇碰…

《AI大模型應知應會100篇》第13篇:大模型評測標準:如何判斷一個模型的優劣

第13篇:大模型評測標準:如何判斷一個模型的優劣 摘要 近年來,大語言模型(LLMs)在自然語言處理、代碼生成、多模態任務等領域取得了顯著進展。然而,隨著模型數量和規模的增長,如何科學評估這些模…