gpt4 book ai didi

python - 从列表中取出每第 n 个 block

转载 作者:太空狗 更新时间:2023-10-29 21:41:42 25 4
gpt4 key购买 nike

给定一个列表:

import string
a = list(string.ascii_lowercase)

返回每 nth block m 元素的 Pythonic 方法是什么?请注意,这与仅返回 every nth element 不同。 .

取 3 个元素的 3 个 block 中的每 第一个 的期望结果(取 3,跳过 6,取 3,跳过 6...):

['a', 'b', 'c', 'j', 'k', 'l', 's', 't', 'u']

我可以这样理解:

import itertools
s1 = a[::9]
s2 = a[1::9]
s3 = a[2::9]
res = list(itertools.chain.from_iterable(zip(s1,s2, s3)))

有没有更简洁的方法?

最佳答案

对于选择和跳过的固定顺序,您可以将指数包装在窗口的总长度上取模(此处为 9),并仅选择给定阈值 3 以下的指数:

lst = [x for i, x in enumerate(a) if i % 9 < 3]
print(lst)
# ['a', 'b', 'c', 'j', 'k', 'l', 's', 't', 'u']

你可以把它做成一个函数,使用起来更直观:

def select_skip(iterable, select, skip):
return [x for i, x in enumerate(iterable) if i % (select+skip) < select]

print(select_skip(a, select=3, skip=6))
# ['a', 'b', 'c', 'j', 'k', 'l', 's', 't', 'u']

关于python - 从列表中取出每第 n 个 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46282825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com