itertools的用法集合

itertools简介

itertools模块是Python标准库中非常强大的一个模块,提供了一些用于高效遍历、组合和排列迭代器元素的工具函数。下面是itertools模块的一些常用用法及示例:

1.itertools.count()

itertools.count()
这个函数返回一个无限迭代器,它会不断生成连续的整数。

import itertools

for i in itertools.count(start=1, step=2):
    print(i)
    if i == 9:
        break

输出:

1
3
5
7
9

2.itertools.cycle()

itertools.cycle()
这个函数返回一个无限迭代器,它会不断重复给定的序列。

import itertools

colors = ['red', 'green', 'blue']
for color in itertools.cycle(colors):
    print(color)
    if color == 'blue':
        break

输出:

red
green
blue

3.itertools.repeat()

itertools.repeat()
这个函数返回一个无限迭代器,它会不断重复给定的对象。

import itertools

for i in itertools.repeat('hello', times=3):
    print(i)

输出:

hello
hello
hello

4.itertools.chain()

itertools.chain()
这个函数将多个迭代器连接在一起,返回一个新的迭代器。

import itertools

a = [1, 2, 3]
b = ['a', 'b', 'c']
for x in itertools.chain(a, b):
    print(x)

输出:

1
2
3
a
b
c

5.itertools.islice()

itertools.islice()
这个函数返回一个迭代器的部分切片。

import itertools

a = [1, 2, 3, 4, 5]
for x in itertools.islice(a, 2, None):
    print(x)

输出:

3
4
5

6.itertools.compress()

itertools.compress()
这个函数接受一个可迭代对象和一个相同长度的布尔值序列,返回一个由可迭代对象中对应布尔值为True的元素构成的迭代器。

import itertools

data = ['a', 'b', 'c', 'd', 'e']
selectors = [True, False, True, False, True]
for x in itertools.compress(data, selectors):
    print(x)

输出:

a
c
e

7.itertools.permutations()

itertools.permutations()
这个函数返回指定长度的排列组合。

import itertools

for p in itertools.permutations('abc', 2):
    print(p)

输出:

('a', 'b')
('a', 'c')
('b', 'a')
('b', 'c')
('c', 'a')
('c', 'b')

8.itertools.combinations()

itertools.combinations()
这个函数返回指定长度的组合,不考虑元素的顺序。

import itertools

for c in itertools.combinations('abc', 2):
    print(c)

输出:

('a', 'b')
('a', 'c')
('b', 'c')

9.itertools.product()

itertools.product()
这个函数返回多个迭代器的笛卡尔积。

import itertools

a = [1, 2]
b = ['a', 'b']
for p in itertools.product(a, b):
    print(p)

输出:

(1, 'a')
(1, 'b')
(2, 'a')
(2, 'b')

10.itertools.groupby()

itertools.groupby()
这个函数返回一个迭代器,它根据给定的键函数对元素进行分组。

import itertools

data = [
    {'name': 'Alice', 'age': 25},
    {'name': 'Bob', 'age': 30},
    {'name': 'Charlie', 'age': 25},
    {'name': 'David', 'age': 30},
]

for key, group in itertools.groupby(data, key=lambda x: x['age']):
    print(key)
    for item in group:
        print('    ', item['name'])

输出:

25
     Alice
     Charlie
30
     Bob
     David

你可能感兴趣的:(数学建模,python,matlab)