itertools, 一個超好用的Python庫

前言

Python用來處理迭代器的工具你想到了啥?itertools 就是一個特別有用的庫,它提供了一系列用于創建和操作迭代器的工具,以下是10個常用的操作,可用在實際工作中,熟練掌握這些操作,將極大提升你在 Python 中的編程效率。
?

1. 無限計數器:?count()

count(start, step)?用于創建一個無限的迭代器,從?start?開始,每次增加?step?

import?itertoolsfor?num?in?itertools.count(10,?2):if?num?>?20:breakprint(num)

2. 循環迭代:?cycle()

cycle(iterable)?會無限重復迭代一個可迭代對象。

counter?=?0
for?item?in?itertools.cycle('ABCD'):if?counter?>?7:breakprint(item)counter?+=?1

3. 重復元素:?repeat()

repeat(object, times)?重復一個對象?times?次。

for?item?in?itertools.repeat('Hello',?3):print(item)

4. 鏈接迭代器:?chain()

chain(*iterables)?用于鏈接多個迭代器。

for?item?in?itertools.chain([1,?2,?3],?['a',?'b']):print(item)

5. 數據過濾:?compress()

compress(data, selectors)?根據?selectors?中的布爾值過濾?data?

for?item?in?itertools.compress('ABCDE',?[1,0,1,0,1]):print(item)

6. 迭代器切片:?islice()

islice(iterable, start, stop[, step])?對迭代器進行切片操作。

for?item?in?itertools.islice(range(10),?2,?8,?2):print(item)

7. 笛卡爾積:?product()

product(*iterables, repeat=1)?創建一個迭代器,生成輸入迭代器的笛卡爾積。

for?item?in?itertools.product('AB',?range(2)):print(item)

8. 排列組合:?permutations()

permutations(iterable, r=None)?返回可迭代對象的所有長度為?r?的排列。

for?item?in?itertools.permutations('ABC',?2):print(item)

9. 組合生成:?combinations()

combinations(iterable, r)?返回可迭代對象的所有長度為?r?的組合。

for?item?in?itertools.combinations('ABC',?2):print(item)

10. 組合生成(允許重復):?combinations_with_replacement()

combinations_with_replacement(iterable, r)?類似于?combinations?,但允許元素重復。

for?item?in?itertools.combinations_with_replacement('ABC',?2):print(item)

結語

itertools?庫提供了強大而靈活的工具集,用于處理各種迭代任務。無論是簡單的數據重復還是復雜的數據組合,?itertools?都能輕松應對。

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

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

相關文章

棧(順序棧)實現Language C

###王道考研的學習領悟,個人喜好講解清晰 何為棧? 定義:棧(stack)是只允許在一端進行插入或刪除的線性表。 其重要術語:棧頂,棧底,空棧。 我們只需要把這個圖看明白了,理解起來就…

學校機房Dev c++解決中文亂碼問題

工具->編譯選項->勾選 編譯時加入以下命令 -fexec-charsetGBK -finput-charsetUTF-8 顯示中文:工具->編輯器選項->去掉第一個的勾勾。

vue+node對接支付寶沙箱

目錄 一、準備工作 二、后端node 1、添加支付寶配置文件 2、開始寫支付提交接口 3、前端部分(點擊提交訂單)3.1、寫axios請求 3.2、點擊提交訂單按鈕后發送網絡請求 3.3、付款成功跳轉的頁面的路徑是下面這樣的: 4、后端向支付寶發請求…

Github上最值得學習的10個Android開源項目,安卓面試題

1.Java語言進階與Android相關技術核 Android應用是由Java語言進行開發的,SDK也是由Java語言編寫,對于Android來說,只要SDK沒有用Kotlin重寫,那么Java語言是都需要學習的。而且Android APK的后臺服務器程序大概率是Java語言構建&a…

【計算機網絡】應用層自定義協議

自定義協議 一、為什么需要自定義協議?二、網絡版計算器1. 基本要求2. 序列化和反序列化3. 代碼實現(1)封裝 socket(2)定制協議和序列化反序列化(3)客戶端(4)計算器服務端…

Javaweb之SpringBootWeb案例之自動配置以及常見方案的詳細解析

3.2 自動配置 我們講解了SpringBoot當中起步依賴的原理,就是Maven的依賴傳遞。接下來我們解析下自動配置的原理,我們要分析自動配置的原理,首先要知道什么是自動配置。 3.2.1 概述 SpringBoot的自動配置就是當Spring容器啟動后&#xff0c…

OLLAMA 本地模型調用

Ollama 網址下載 再cmd,用 library 里面的庫 英文對話: Gemma is available in both 2b and 7b parameter sizes: ollama run gemma:2bollama run gemma:7b (default) 中文對話 ollama run qwen:0.5bollama run qwen:1.8b 用vscode而不是cmd調用 …

【論文筆記】An Effective Adversarial Attack on Person Re-Identification ...

原文標題(文章標題處有字數限制): 《An Effective Adversarial Attack on Person Re-Identification in Video Surveillance via Dispersion Reduction》 Abstract 通過減少神經網絡內部特征圖的分散性攻擊reid模型。 erbloo/Dispersion_r…

強化學習嵌入Transformer(代碼實踐)

這里寫目錄標題 ChatGPT的答案GPT4.0 ChatGPT的答案 # 定義Transformer模塊 class Transformer(nn.Module):def __init__(self, input_dim, hidden_dim, num_heads, num_layers):super(Transformer, self).__init__()self.encoder_layer nn.TransformerEncoderLayer(d_modeli…

Vue3中組件通訊的方式

Vue3中組件通訊的方式 1 🤖GPT🤖: (答案有點問題混淆了vue2的內容) 父組件向子組件傳遞數據 props 子組件通過 props 屬性從父組件接收數據。emit事件子組件通過emit 事件 子組件通過 emit事件子組件通過emit 發射事件向父組件發送消息。provide / in…

Java SpringCloud gateway面試題

Java SpringCloud gateway面試題 前言1、什么是網關Zuul(gateway)?2、服務網關的作用?3、Zuul網關(Gateway)如何搭建集群?4、ZuulFilter常用有那些方法?5、如何實現動態zuul網關路由轉發?6、在Z…

kubeadm安裝部署

目錄 1.要求 2.環境準備 3.所有節點安裝docker 4.所有節點安裝kubeadm,kubelet和kubectl 5.部署K8S集群 6.測試 7.擴展3個副本 8.部署Dashboard master(2C/4G,cpu核心數要求大于2)192.168.27.10docker、kubeadm、kubelet、…

LightDB - ecpg 支持dml 中使用 return into 【24.1】

在之前的版本中ecpg 中只能使用returning into 來給c 變量賦值,如下: exec sql update t1 set c aa where id 2 returning c into :c_val;為了兼容oracle pro*c 中return into 的用法,從24.1 開始, LightDB 也支持通過return in…

Chrome插件 | WEB 網頁數據采集和爬蟲程序

無邊無形的互聯網遍地是數據,品類豐富、格式繁多,包羅萬象。數據采集,或說抓取,就是把分散各處的內容,通過各種方式匯聚一堂,是個有講究要思考的體力活。君子愛數,取之有道,得注意遵…

mobile app 安全掃描工具MobSF了解下

可以干啥: static 靜態分析 dynamic 動態分析 可以用來滲透了 如何docker安裝 docker image 下載地址https://hub.docker.com/r/opensecurity/mobile-security-framework-mobsf/ setup 兩行即可 1 docker pull opensecurity/mobile-security-framework-mobsf…

關于VScode遠程編寫linux SHELL的報錯處理

使用vscode遠程編寫linux保存shell時,提示報錯: 未能保存“shell”: 無法寫入文件"vscode-remote:.../tmp/shell"(NoPermissions (FileSystemError): Error: EACCES: permission denied, open /tmp/shell) 大體意思是說:權限被拒…

Python | 從子目錄文件導入父目錄模塊的方法

問題描述 我有兩級目錄,第一級稱為parent_dir,第二級稱為child_dir。現在在child_dir下,有一個py,稱為child.py,在parent_dir下,也有一個py,稱為parent.py。 我想從child.py中導入parent.py中…

Go Slice的底層實現原理深度解析

文章目錄 切片的誕生:數組的延伸切片的結構初始化切片 切片的內存管理擴容機制 實例分析:切片的動態特性切片與性能性能對比 切片的并發安全并發場景下的切片操作 切片與接口切片與空接口 切片的遍歷與操作遍歷切片切片的切片操作 切片的垃圾回收切片的生…

年輕人怎么搞錢?

年輕人想要搞錢,可以考慮以下幾個方面: 1. 創業:年輕人可以通過自己的創意,找到一個市場的空缺,開創自己的業務。可以從比較小的項目開始,逐漸擴大范圍,積累經驗和財富。 2. 投資:…

成為大佬之路--linux軟件安裝使用第000000021篇--linux安裝docker

簡介 Docker 是一個開源項目,誕生于 2013 年初,最初是 dotCloud 公司內部的一個業余項目。它基于 Google 公司推出的 Go 語言實現。 項目后來加入了 Linux 基金會,遵從了 Apache 2.0 協議,項目代碼在 [GitHub](https://github.co…