Python 用islice()选取子集

  • Post category:Python

islice() 是 Python 标准库 itertools 中的一个函数,他可以选取序列的子集并以迭代器的方式返回,具体使用方法如下:

函数签名

itertools.islice(iterable, start, stop[, step])

参数说明

  • iterable: 序列
  • start:选取的开始切片索引位置,包含该索引位置的元素
  • stop: 选取的结束切片索引位置,不包含该索引位置的元素
  • step: 切片的步长,默认为 1

返回值

islice() 函数返回的是一个迭代器对象,当迭代器到达停止位置时会自动停止,但如果 start 或 stop 大于序列长度,islice() 不会报错,而是在迭代器结束后停止。

示例说明

示例一:选取列表中的前5个元素

from itertools import islice

lst = [1, 2, 3, 4, 5, 6, 7, 8]
iter_ = iter(lst)
result = islice(iter_, 5)

for item in result:
    print(item)

# 输出结果
# 1
# 2
# 3
# 4
# 5

示例二:选取列表中的奇数元素

from itertools import islice

lst = [1, 2, 3, 4, 5, 6, 7, 8]
result = islice((i for i in lst if i % 2 != 0), None)

for item in result:
    print(item)

# 输出结果
# 1
# 3
# 5
# 7

在第二个示例中,我们使用了一个生成器表达式来生成满足条件的奇数元素,然后使用 islice() 函数来选取所有的元素,因为我们不知道选取元素的数量,所以 step 参数使用默认值 None.