Python中的itertools模块:使用函数及示例
Python中的itertools模块是一个非常强大的工具,可以用于迭代器和组合操作。它提供了一些很有用的函数,包括:
1. count(start=0, step=1): 从start开始,按步长step不断生成数。
2. cycle(iterable):重复迭代iterable中的所有元素。
3. dropwhile(function, iterable): 首先使用function测试iterable中的元素,一旦测试为false,则从该元素开始返回所有元素。
4. takewhile(function, iterable): 首先使用function测试iterable中的元素,返回符合测试的所有元素,一旦测试为false,则停止迭代。
5. islice(iterable, start=0, stop=None, step=1): 类似于常规的切片功能,返回iterable中的一个切片。
6. groupby(iterable, key=None): 将iterable中相邻的具有相同键值的元素分组。
7. permutations(iterable, r=None): 返回iterable中长度为r的所有元素的排列。
8. combinations(iterable, r): 返回iterable中长度为r的所有元素的组合。
9. product(*iterables, repeat=1): 返回iterables中元素的多重笛卡尔积,repeat是重复次数。
下面是一些使用itertools模块函数的示例:
示例1:使用count函数生成一些整数
import itertools
for i in itertools.count(10, 2):
if i > 20:
break
else:
print(i)
输出结果:
10 12 14 16 18 20
示例2:使用cycle函数循环一个列表
import itertools
lst = ['a', 'b', 'c']
for i in itertools.cycle(lst):
print(i)
输出结果:
a b c a b c ...
示例3:使用dropwhile函数删除列表中的元素
import itertools lst = [3,4,1,2,5] result = itertools.dropwhile(lambda x: x < 3, lst) print(list(result))
输出结果:
[3, 4, 1, 2, 5]
示例4:使用takewhile函数提取一个列表中的元素
import itertools lst = [3,4,1,2,5] result = itertools.takewhile(lambda x: x < 3, lst) print(list(result))
输出结果:
[1, 2]
示例5:使用islice函数获取列表的一个部分
import itertools lst = [1,2,3,4,5,6,7,8,9] result = itertools.islice(lst, 2, 7, 2) print(list(result))
输出结果:
[3, 5, 7]
示例6:使用groupby函数对列表进行分组
import itertools
lst = [(1,'a'), (1,'b'), (2,'c'), (2,'d'), (3,'e')]
for key, group in itertools.groupby(lst, lambda x: x[0]):
print(key, list(group))
输出结果:
1 [(1, 'a'), (1, 'b')] 2 [(2, 'c'), (2, 'd')] 3 [(3, 'e')]
示例7:使用permutations函数获取字符串的所有排列
import itertools string = 'ABC' result = itertools.permutations(string, 2) print(list(result))
输出结果:
[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
示例8:使用combinations函数获取序列的所有组合
import itertools lst = [1,2,3,4] result = itertools.combinations(lst, 2) print(list(result))
输出结果:
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
示例9:使用product函数获取元素的多重笛卡尔积
import itertools lst1 = [1, 2] lst2 = ['a', 'b'] result = itertools.product(lst1, lst2) print(list(result))
输出结果:
[(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]
以上就是itertools模块中常用的几个函数的使用及其示例,这些函数可以大大丰富Python的编程能力。
