Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Remove element from list based on condition

I have a list l:

l = [0.22, 0.6, 0.94, 1.28, 1.66, 2., 2.38, 2.72, 3.04, 3.42, 3.76, 4.2, 4.58, 4.94, 5.32, 5.68, 6.08, 6.42, 6.8, 7.22, 7.54]

I want to remove from the list all elements which are within a 1.00 distance to the previous element. This involves of course to stay at element i if element i+1 has been removed and check the difference between element i and element i+2 and so on. The desired output would be:

output = [0.22, 1.28, 2.38, 3.42, 4.58, 5.68, 6.8]

I obviously tried to do this with a for-loop but as this failed, I remembered that Python does not allow altering a list within a loop.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

for index, i in enumerate(l[:-1]):
    j = l[index+1]
    if (j-i) < 1:
        p.remove(j)
    else:
        continue

Furthermore, I know that itertools contains the pairwise method for Python 3.10 and above, which makes it possible to calculate differences (which might be useful for this task) but I am using 3.7.6.
Any solution is appreciated. Thank you!

>Solution :

you could do like this:

l = [0.22, 0.6, 0.94, 1.28, 1.66, 2., 2.38, 2.72, 3.04, 3.42, 3.76, 4.2, 4.58, 
4.94, 5.32, 5.68, 6.08, 6.42, 6.8, 7.22, 7.54]
l2 = [l[0]]
for elm in l:
    if abs(elm - l2[-1]) > 1:
        l2.append(elm)
print(l2)
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading