Python Forum
I cannot delete and the elements from the list
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
I cannot delete and the elements from the list
#1
Hello,
I am trying to run this code. The idea is to compare all elements in the list with another single element. If they are same, process and delete and return the last value. If they are not same just delete:
But I have some troubles in delete part. Here is my code:

def func(queue):
    for index, q in enumerate((queue.copy())): #queue[:]: 
                   if q.idt==OP[1]:
                       a=Operation(q,OP[0])
                       return self.queue.pop(index)
                       #return self.queue.remove(q)
                   elif q.idt < OP[1]:
                       self.unpauli.append(q.idt)
                       self.queue.pop(index)
                       #self.queue.remove(q)
                       #continue
                      
I have no error message but the result is coming wrong. Where is the mistake in the code?
Reply
#2
Python documentation, The return statement:

Quote:return may only occur syntactically nested in a function definition, not within a nested class definition.

Function is nowhere to be seen.
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply
#3
(May-11-2021, 10:51 AM)perfringo Wrote: Python documentation, The return statement:

Quote:return may only occur syntactically nested in a function definition, not within a nested class definition.

Function is nowhere to be seen.

I just did not paste the beginning of the function but it is not a problem. THe problem is that I cannot delete my elements from the list. I tried a small program for seeing what is going on here and the result is same:
l2=[0,1,2,3,4,5,6,7,8,9]
a=1
l2.copy()
for ind,el in enumerate(l2):   
    if a==el:
       l2.remove(ind)
    else:
       #l2.pop(ind)
       l2.remove(ind)
print(l2)     
it should return an empty list but no !
Reply
#4
Don't modify an iterator while you're iterating over it,it's a known bad patternđź’€
Will mess up list index and will get your result.
Could add enumerate(l2[:]) to make it work,but still no t good as as remove() has to go over the whole list for every iteration O(n^2).

The solution is to make a new list,then therew is no remove()(that rarely ever need to be used) used in the loop.
l2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a = 1
result = []
for ind, el in enumerate(l2):
    if el != a:
       result.append(el)

print(result)
[0, 2, 3, 4, 5, 6, 7, 8, 9]
Or list comprehension.
>>> l2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [el for el in l2 if el != 1]
[0, 2, 3, 4, 5, 6, 7, 8, 9]
quest likes this post
Reply
#5
"If fact, in any programming language for most part if you mutate something while you iterating over it you living in state of sin and you deserve whatever happens to you" -- Raymond Hettinger, Python core-developer, Transforming Code into Beautiful, Idiomatic Python

What is purpose of l2.copy(). It creates copy but as you don't bind it to the name so it's not accessible, no pointers to it and garbage collector will destroy it. It doesn't have any effect on result of your code.

>>> help(list.copy)
Help on method_descriptor:

copy(self, /)
    Return a shallow copy of the list.
quest likes this post
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  unable to remove all elements from list based on a condition sg_python 3 373 Jan-27-2024, 04:03 PM
Last Post: deanhystad
Question mypy unable to analyse types of tuple elements in a list comprehension tomciodev 1 427 Oct-17-2023, 09:46 AM
Last Post: tomciodev
  Delete strings from a list to create a new only number list Dvdscot 8 1,466 May-01-2023, 09:06 PM
Last Post: deanhystad
  Checking if a string contains all or any elements of a list k1llcod3 1 1,023 Jan-29-2023, 04:34 AM
Last Post: deanhystad
  How to change the datatype of list elements? mHosseinDS86 9 1,899 Aug-24-2022, 05:26 PM
Last Post: deanhystad
  ValueError: Length mismatch: Expected axis has 8 elements, new values have 1 elements ilknurg 1 5,013 May-17-2022, 11:38 AM
Last Post: Larz60+
  Why am I getting list elements < 0 ? Mark17 8 3,028 Aug-26-2021, 09:31 AM
Last Post: naughtyCat
  Looping through nested elements and updating the original list Alex_James 3 2,069 Aug-19-2021, 12:05 PM
Last Post: Alex_James
  Extracting Elements From A Website List knight2000 2 2,179 Jul-20-2021, 10:38 AM
Last Post: knight2000
  Make Groups with the List Elements quest 2 1,934 Jul-11-2021, 09:58 AM
Last Post: perfringo

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020