从列表中删除n个多个项目

时间:2015-11-18 12:55:29

标签: python arrays list

问题

我想从列表中删除项目,以便保留前n个项目,然后删除下一个2n项目。

例如

  

对于n = 8,我想保留前8个,删除下16个并根据需要重复此操作:

     

a =范围(48)

     

我想成为

     

[0,1,2,3,4,5,6,7,24,25,26,27,28,29,30,31]

这是为了挑选出一天中的前8个小时,并且每小时运行一次功能。

我发现很难在搜索查询中对此进行短语,所以答案可能很简单,但我没有运气!

3 个答案:

答案 0 :(得分:2)

您可以使用理解列表:

[ a[i] for i in range(len(a)) if (i % 24 < 8) ]

以上仅创建一个新列表。如果要编辑列表,必须从最后开始明确删除不需要的元素,以避免更改索引:

for i in range(len(a) - 1, 0, -1):
    if i % 24 >= 8:
        del a[i]

答案 1 :(得分:1)

AMD$ awk '/\*\*\* /{p=$0} {a[p]++} END{for(i in a) print i"\n"a[i]-1}' File
*** dev1
3
*** dev2
2

def hours(n): items = [x for x in range(49)] del items[n:n*3] print(items)

根据您的新鲜程度,您可能很难理解此代码,因此我将尝试解释一下:

我们首先创建一个带有参数hours(8)的函数,为了测试目的,我们将使用n然后我们使用list comprehension生成所有数字(0, 48)然后使用the del statement删除不需要的元素,我们将从列表中的8删除到n元素。例如,如果将n*3作为9传递,我们对n语句的使用可以翻译为:del

希望这是有道理的。

答案 2 :(得分:0)

这应该很容易理解

a = range(48)
n=8
result=[]
while a:
    result+= a[:n]
    a=a[n*3:]

print result