網站首頁 編程語言 正文
Python的Itetool是一個模塊,它提供了各種函數,這些函數在迭代器上工作以產生復雜的迭代器。該模塊作為一個快速,內存效率的工具,可以單獨使用或組合使用以形成迭代器代數。
例如,假設有兩個列表,并且您想要將它們的元素相乘。有幾種方法可以實現這一目標。可以使用樸素的方法,即同時迭代列表的元素并將它們相乘。另一種方法是使用 map 函數,即通過將 mul 運算符作為第一個參數傳遞給 map 函數,并將 List 作為該函數的第二個和第三個參數傳遞。讓我們看看每種方法所花費的時間。
# 演示迭代器模塊的Python程序
import operator
import time
# 定義列表
L1 = [1, 2, 3]
L2 = [2, 3, 4]
# 映射函數之前的開始時間
t1 = time.time()
# 計算結果
a, b, c = map(operator.mul, L1, L2)
# 映射函數后的結束時間
t2 = time.time()
# 映射函數花費的時間
print("Result:", a, b, c)
print("Time taken by map function: %.6f" %(t2 - t1))
# 初始方法之前的開始時間
t1 = time.time()
# 使用for循環計算結果
print("Result:", end = " ")
for i in range(3):
print(L1[i] * L2[i], end = " ")
# 樸素方法后的結束時間
t2 = time.time()
print("\nTime taken by for loop: %.6f" %(t2 - t1))
輸出:
Result: 2 6 12
Time taken by map function: 0.000005
Result: 2 6 12?
Time taken by for loop: 0.000014
在上面的示例中,可以看出 map 函數所花費的時間大約是 for 循環所用時間的一半。這表明迭代工具是快速、內存高效的工具。
此模塊提供的不同類型的迭代器包括:
- 無限迭代器
- 組合迭代器
- 終止迭代器
無限迭代器
Python 中的迭代器是可以與“for in 循環”一起使用的任何 Python 類型。Python 列表、元組、字典和集合都是內置迭代器的示例。但是迭代器對象不必窮盡,有時它可以是無限的。這種類型的迭代器稱為無限迭代器。
Python 提供了三種類型的無限迭代器:
計數(開始,步驟)
此迭代器從“開始”數字開始打印并無限打印。如果提到步驟,則跳過數字,否則默認情況下步驟為1。請參閱下面的示例,了解它與 for in 循環的用法。
例:
# 演示無限迭代器的Python程序
import itertools
# for 循環
for i in itertools.count(5, 5):
if i == 35:
break
else:
print(i, end =" ")
輸出:
5 10 15 20 25 30
循環(可迭代)
此迭代器按傳遞的容器中的順序打印所有值。當所有元素都以循環方式打印時,它將再次從頭開始重新開始打印。
示例 1:
# 演示無限迭代器的Python程序
import itertools
count = 0
# for 循環
for i in itertools.cycle('AB'):
if count > 7:
break
else:
print(i, end = " ")
count += 1
輸出:
A B A B A B A B?
示例 2: 使用下一個函數。
# 演示無限迭代器的Python程序
import itertools
l = ['Geeks', 'for', 'Geeks']
# 定義迭代器
iterators = itertools.cycle(l)
# for 循環
for i in range(6):
# Using next function
print(next(iterators), end = " ")
組合迭代器
輸出:
Geeks for Geeks Geeks for Geeks?
重復(值、數)
此迭代器重復打印傳遞的值無限次。如果提到可選關鍵字 num,則它會重復打印 num 次數。
例:
# 演示 repeat() 工作的Python代碼
# 為迭代器操作導入“itertools”
import itertools
# 使用 repeat() 重復打印數字
print ("Printing the numbers repeatedly : ")
print (list(itertools.repeat(25, 4)))
輸出:
Printing the numbers repeatedly :?
[25, 25, 25, 25]
原文鏈接:https://juejin.cn/post/7148701447968784421
相關推薦
- 2022-09-09 React前端DOM常見Hook封裝示例下_React
- 2022-06-14 C語言數據類型與sizeof關鍵字_C 語言
- 2022-08-20 Python超詳細講解元類的使用_python
- 2022-11-16 詳解Python中range()與xrange()的區別_python
- 2022-01-18 VSCode git拉取代碼,提示:在簽出前,請清理存儲庫工作樹。
- 2022-06-11 Go1.18?新特性之多模塊Multi-Module工作區模式_Golang
- 2022-04-19 Go語言標準輸入輸出庫的基本使用教程_Golang
- 2022-05-11 如果解決tomcat端口號被占用
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支