itertools groupby
时间: 2023-11-14 20:10:07 浏览: 165
itertools.groupby() 是 Python 中的一个函数,它可以将一个可迭代对象中相邻的重复元素分组。具体来说,它返回一个迭代器,每个元素都是一个 (key, group) 的二元组,其中 key 是分组的键,group 是一个迭代器,包含了所有与 key 相同的元素。
下面是一个例子:
```python
from itertools import groupby
lst = [1, 1, 2, 2, 3, 4, 4, 4, 5]
groups = groupby(lst)
for key, group in groups:
print(key, list(group))
```
输出:
```
1 [1, 1]
2 [2, 2]
3 [3]
4 [4, 4, 4]
5 [5]
```
在这个例子中,我们将列表 `[1, 1, 2, 2, 3, 4, 4, 4, 5]` 中相邻的重复元素分组,并打印出每个分组的键和元素列表。
相关问题
python itertools groupby
`itertools.groupby()` 是 Python 标准库 `itertools` 模块中的一个函数,用于对可迭代对象进行分组操作。它根据指定的键函数将连续的元素分组,并返回一个迭代器,每个元素是一个包含键和分组迭代器的元组。
下面是一个示例代码,展示了如何使用 `itertools.groupby()` 函数:
```python
from itertools import groupby
# 定义一个函数作为键函数,用于返回元素的奇偶性
def is_even(num):
return num % 2 == 0
# 定义一个列表作为示例输入
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 使用 groupby() 函数进行分组
groups = groupby(numbers, key=is_even)
# 遍历分组结果
for key, group in groups:
print(f"Key: {key}")
print(f"Group: {list(group)}")
print()
```
运行上述代码,将会输出:
```
Key: False
Group: [1, 3, 5, 7, 9]
Key: True
Group: [2, 4, 6, 8, 10]
```
可以看到,`itertools.groupby()` 函数将奇数和偶数分别分组,并返回了两个分组的迭代器。在实际应用中,我们可以根据自己的需求定义不同的键函数来进行分组。
itertools.groupby
`itertools.groupby` 是一个 Python 标准库中的函数,用于对可迭代对象进行分组操作。
它接受两个参数:可迭代对象 `iterable` 和分组条件函数 `key`。它将可迭代对象的元素按照指定的条件进行分组,并返回一个迭代器,每个元素都是一个 `(key, group)` 对,其中 `key` 是分组的条件值,`group` 是一个迭代器,包含了与该条件相匹配的元素。
这是一个使用 `itertools.groupby` 的简单示例:
```python
from itertools import groupby
# 准备一个列表
data = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
# 使用 lambda 函数作为分组条件函数
groups = groupby(data, lambda x: x)
# 遍历分组结果并打印
for key, group in groups:
print(key, list(group))
```
输出结果为:
```
1 [1, 1]
2 [2, 2]
3 [3, 3]
4 [4, 4]
5 [5, 5]
```
在这个示例中,我们使用了 `groupby` 来按照元素的值对列表进行分组。lambda 函数 `lambda x: x` 将每个元素作为其自身的分组条件。然后,我们遍历分组结果并打印每个分组的键和值(作为列表)。
阅读全文