Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove/delete every n-th element from list?

I had already looked through this post: Python: building new list from existing by dropping every n-th element, but for some reason it does not work for me:

I tried this way:

def drop(mylist, n):
    del mylist[0::n]
    print(mylist)

This function takes a list and n. Then it removes every n-th element by using n-step from list and prints result.

Here is my function call:

drop([1,2,3,4],2)

Wrong output:
[2, 4] instead of [1, 3]


Then I tried a variant from the link above:

def drop(mylist, n):
    new_list = [item for index, item in enumerate(mylist) if index % n != 0]
    print(new_list)

Again, function call:

drop([1,2,3,4],2)

Gives me the same wrong result: [2, 4] instead of [1, 3]


How to correctly remove/delete/drop every n-th item from a list?

like image 562
Erba Aitbayev Avatar asked Oct 03 '15 17:10

Erba Aitbayev


1 Answers

Let's say you have the list:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

If you want to remove every k-th element you can do something like

del a[k-1::k]

For example with k = 3, the current list is now

[1, 2, 4, 5, 7, 8, 10]
like image 150
nono Avatar answered Nov 03 '22 08:11

nono