2024-04-25 07:29:08 发布
网友
假设我有一个包含1000个元素的长列表,我想根据两个变量定期删除元素组。你知道吗
所以对于my_list=[1,2,3,4...1000]和a=5,b=7,我会保留前5个元素,删除下7个元素,然后重复,直到列表的末尾。你知道吗
my_list=[1,2,3,4...1000]
a=5
b=7
列表将如下所示:
my_list = [1,2,3,4,5,12,13,14,15,16...]
在使用它们之前我不知道a或b,也不知道列表的长度,所以我在寻找一个通用的解决方案。你知道吗
谢谢!你知道吗
这里有一种使用迭代器的不同方法:
import itertools as it L = list(range(1000)) a, b = 5, 7 mask = it.chain(it.repeat(1, a), it.repeat(0, b)) Result = list(it.compress(L, it.cycle(mask)))
Documentation of the ^{} standard module。你知道吗
这里最酷的是没有中间数据存储在内存中,所有结果都是动态生成的。你知道吗
这里有一种方法可以使用enumerate并将索引的mod取为a和b之和。过滤出mod小于a的值:
enumerate
mod
a
b
l = range(1, 30) a, b = 5, 7 r = [x for i, x in enumerate(l) if i%(a+b) < a] print(r) # [1, 2, 3, 4, 5, 13, 14, 15, 16, 17, 25, 26, 27, 28, 29]
p.S.如果要删除下一个7,则不应包括12。
这里有一种使用迭代器的不同方法:
Documentation of the ^{} standard module 。你知道吗
这里最酷的是没有中间数据存储在内存中,所有结果都是动态生成的。你知道吗
这里有一种方法可以使用
enumerate
并将索引的mod
取为a
和b
之和。过滤出mod小于a
的值:p.S.如果要删除下一个7,则不应包括12。
相关问题 更多 >
编程相关推荐