Python里itertools.chain用法 迭代器工具itertools中chain功能解析

itertools.chain 是 python 中用于連接多個可迭代對象工具,返回一個按需生成元素的迭代器。它有兩種主要用法:1. chain(iterable1, iterable2, …) 可依次連接多個可迭代對象,適用于合并多個列表或字符串;2. chain.from_iterable(iterable_of_iterables) 用于展平嵌套結構,如二維列表。常見應用場景包括處理日志文件、組合不同來源的數據以及減少數據拷貝。使用時需注意 chain 返回的是單次迭代器,無法重復遍歷,且 from_iterable 要求每個元素都必須是可迭代的。

python 的 itertools 模塊中,chain 是一個非常實用的工具,用來將多個可迭代對象連接在一起,形成一個連續的迭代器。它不會一次性把所有數據加載到內存中,而是按需生成元素,非常適合處理大體量的數據。


什么是 itertools.chain

itertools.chain 的作用是將多個可迭代對象(比如列表、元組、字符串等)依次連接起來,返回一個可以逐個訪問這些元素的迭代器。它不改變原始數據,也不會復制數據,只是“按順序讀取”的一種方式。

使用方式主要有兩種:

  • chain(iterable1, iterable2, …):直接傳入多個可迭代對象
  • chain.from_iterable(iterable_of_iterables):傳入一個包含多個可迭代對象的可迭代對象(比如列表的列表)

常見用法與示例

合并多個列表或字符串

這是最基礎的用法。如果你有幾個列表或者字符串,想一個個地遍歷,而不是嵌套循環,就可以用 chain。

立即學習Python免費學習筆記(深入)”;

from itertools import chain  list1 = [1, 2, 3] list2 = ['a', 'b', 'c'] result = chain(list1, list2)  for item in result:     print(item)

輸出:

1 2 3 a b c

這種方式比先合并成一個新列表再遍歷更節省內存,尤其是處理大列表時。


使用 from_iterable 展開嵌套結構

當你有一個嵌套結構,比如二維列表,想要把它展平成一維來遍歷,這時候可以用 chain.from_iterable()。

nested_list = [[1, 2], [3, 4], [5]] flattened = chain.from_iterable(nested_list)  print(list(flattened))  # 輸出: [1, 2, 3, 4, 5]

這個方法在處理 json 數據、網頁爬蟲結果等嵌套結構時非常有用。


在實際項目中的應用建議

  • 處理日志文件:如果你有多個日志文件,每個文件一行行記錄,可以用 chain 把它們串起來統一處理。
  • 組合不同來源的數據:比如從數據庫、API 和本地緩存各取出一部分數據,可以用 chain 把它們拼接后統一分析。
  • 減少不必要的拷貝:比起用 + 運算符合并兩個列表,chain 更高效,特別是當數據量大的時候。

一些注意事項:

  • chain 返回的是一個迭代器,不是列表,不能重復遍歷。
  • 如果你需要多次使用結果,記得轉成列表保存下來。
  • from_iterable 要求輸入的每個元素都必須是可迭代的,否則會報錯。

基本上就這些。掌握好 itertools.chain 可以讓你在處理多個序列時更加靈活和高效。

以上就是Python里itertools.ch

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享