《Python Cookbook 3rd》笔记(4.12):不同集合上元素的迭代
生活随笔
收集整理的這篇文章主要介紹了
《Python Cookbook 3rd》笔记(4.12):不同集合上元素的迭代
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
不同集合上元素的迭代
問題
你想在多個對象執行相同的操作,但是這些對象在不同的容器中,你希望代碼在不失可讀性的情況下避免寫重復的循環。
解法
itertools.chain() 方法可以用來簡化這個任務。它接受一個可迭代對象列表作為輸入,并返回一個迭代器,有效的屏蔽掉在多個容器中迭代細節。為了演示清楚,考慮下面這個例子:
>>> from itertools import chain >>> a = [1, 2, 3, 4] >>> b = ['x', 'y', 'z'] >>> for x in chain(a, b): ... print(x) ... 1 2 3 4 x y z >>>使用 chain() 的一個常見場景是當你想對不同的集合中所有元素執行某些操作的時候。比如:
# Various working sets of items active_items = set() inactive_items = set()# Iterate over all items for item in chain(active_items, inactive_items):# Process item這種解決方案要比像下面這樣使用兩個單獨的循環更加優雅,
for item in active_items:# Process item...for item in inactive_items:# Process item...討論
itertools.chain() 接受一個或多個可迭代對象最為輸入參數。然后創建一個迭代器,依次連續的返回每個可迭代對象中的元素。這種方式要比先將序列合并再迭代要高效的多。比如:
# Inefficent for x in a + b:...# Better for x in chain(a, b):...第一種方案中, a + b 操作會創建一個全新的序列并要求 a 和 b 的類型一致。chian() 不會有這一步,所以如果輸入序列非常大的時候會很省內存。并且當可迭代對象類型不一樣的時候 chain() 同樣可以很好的工作。
總結
以上是生活随笔為你收集整理的《Python Cookbook 3rd》笔记(4.12):不同集合上元素的迭代的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows上同时运行两个Tomcat
- 下一篇: 《Python Cookbook 3rd