📜  Python3 中的迭代工具

📅  最后修改于: 2022-05-13 01:54:30.591000             🧑  作者: Mango

Python3 中的迭代工具

Itertools是Python中的一个模块,它用于迭代可以使用 for 循环单步执行的数据结构。这种数据结构也称为可迭代对象。该模块可作为一种快速、高效的内存工具,可单独使用或组合使用以形成迭代器代数。

为什么要使用?

该模块包含有效利用计算资源的功能。使用这个模块也倾向于增强代码的可读性和可维护性。

石斑鱼食谱

grouper()函数可以在 itertools 文档的食谱部分找到。这些食谱是使用 itertools 发挥优势的绝佳灵感来源。
例子

python3
# Python code to demonstrate the
# grouper Recipe
import itertools as it
 
# defining the grouper function
def grouper(inputs, n, fillvalue = None):
    iters = [iter(inputs)] * n
    return it.zip_longest(*iters, fillvalue = fillvalue)
 
alpha = ['g', 'e', 'e', 'k', 's', 'f', 'o',
         'r', 'g', 'e', 'e', 'k', 's']
print(list(grouper(alpha, 3)))


python3
# Python code to demonstrate combinations
import itertools as it
 
print(list(it.combinations([1, 2], 2)))


python3
# Python code to demonstrate combinations_with_replacement
import itertools as it
 
print(list(it.combinations_with_replacement([1, 2], 2)))


python3
# Python code to demonstrate permutations
import itertools as it
 
print(list(it.permutations(['g', 'e', 'k'])))


python3
# Python code to demonstrate flattening a list of lists
import itertools as it
 
list_of_lists = [[1, 2], [3, 4]]
chain_object = it.chain.from_iterable(list_of_lists)
 
# Return chain object with nested lists separated
# Convert to list to flatten
flattened_list = list(chain_object)
 
print(flattened_list)


输出 :

蛮力场景

蛮力是一种解决问题的直接方法,它依赖于纯粹的计算能力并尝试各种可能性,而不是先进的技术来提高效率。有不同的蛮力 itertools函数,例如:

  • 组合()
  • combination_with_replacement()
  • 排列()

组合()

itertools.combinations()函数接受两个参数——一个可迭代的输入和一个正整数 n——并在输入中 n 个元素的所有组合的元组上生成一个迭代器。
例子

蟒蛇3

# Python code to demonstrate combinations
import itertools as it
 
print(list(it.combinations([1, 2], 2)))

输出 :

[(1, 2)]

combination_with_replacement()

combination_with_replacement() 的工作方式与 combine() 类似,接受一个可迭代的输入和一个正整数 n,并返回一个迭代器,该迭代器对来自输入的 n 元组元素进行迭代。不同之处在于combinations_with_replacement() 允许元素在它返回的元组中重复。
例子

蟒蛇3

# Python code to demonstrate combinations_with_replacement
import itertools as it
 
print(list(it.combinations_with_replacement([1, 2], 2)))

输出 :

[(1, 1), (1, 2), (2, 2)] 

排列()

排列是一组对象的集合或组合,其中所选对象的顺序或排列确实很重要。 permutations() 接受单个可迭代对象并生成其元素的所有可能排列(重新排列)。
例子

蟒蛇3

# Python code to demonstrate permutations
import itertools as it
 
print(list(it.permutations(['g', 'e', 'k'])))

输出 :

展平列表列表

将列表列表 (2D) 转换为列表 (1D) 称为展平。展平列表列表会将所有子列表合并为一个统一列表。
例子

蟒蛇3

# Python code to demonstrate flattening a list of lists
import itertools as it
 
list_of_lists = [[1, 2], [3, 4]]
chain_object = it.chain.from_iterable(list_of_lists)
 
# Return chain object with nested lists separated
# Convert to list to flatten
flattened_list = list(chain_object)
 
print(flattened_list)

输出 :

[1, 2, 3, 4]