+ 3

Does remove() method of list affect iteratin of lops and if how

Hey check this code in this the loop is iterating less then it should when I apply <list>.remove () method but when I don't use <list>.remove () it iterates all values. So does <list>.remove () some how affect the iterations of list https://code.sololearn.com/c4i6v5C2cWXf/?ref=app SOLVED

16th May 2020, 3:05 AM
Vijay Gunwant
Vijay Gunwant - avatar
7 Answers
+ 1
Yes, it does, you can instead do: for i in mylist[:] : mylist.remove(i) _______________ Please check the modified version of your code here: https://code.sololearn.com/cgghYpkA0pU0/?ref=app ________________ Also, I have added a better way to parse the list than eval() ________________ The case here is that when you iterate over a list , the for loop gets mylist[0] then remove it from mylist, then next loop round it tries to get mylist[1], which is now the item that was mylist[2] before, and the original mylist[1] is now the new mylist[0], which will not be removed at all now. tldr; Your code will miss the next item after each time it removes. let me know if it needs clarification
16th May 2020, 8:23 AM
NourEddine Yassine
+ 2
Hey I think both of you are not able to understand the question it is talking about lists and I have already attached the code
16th May 2020, 4:25 AM
Vijay Gunwant
Vijay Gunwant - avatar
+ 2
Hey I don't have any problem in My code but I want to ask if remove() some how affects iteration of loop as in presence of remove () every element is only once iterated but not in presence of remove ()
16th May 2020, 4:37 AM
Vijay Gunwant
Vijay Gunwant - avatar
+ 1
b=str(eval(input("Enter a list of number:"))) print() d=list(b) b=list(b) print("actual list",b) print() print("with remove") for a in b: b.remove(a) print(a) print() print("without remove") for a in d: print(a)
16th May 2020, 3:47 AM
ChaoticDawg
ChaoticDawg - avatar
+ 1
That's your code fixed or at least it will run when given a proper input.
16th May 2020, 4:32 AM
ChaoticDawg
ChaoticDawg - avatar
+ 1
Your code doesn't run without error in its current state. eval() returns a number which will cause an error when you try to convert b to list d. Then in your first for loop you're treating b as if it is a list when it is a number again more errors. So, yes, your code and/ or your logic has problems. But to answer your question yes it will effect iteration, because of the way your changing the length of the list that you're also looping on at the same time.
16th May 2020, 4:55 AM
ChaoticDawg
ChaoticDawg - avatar
0
👋 In python the strings are immutable, that's why they don't have a function to remove elements unlike lists
16th May 2020, 3:27 AM
Emanuel Maliaño
Emanuel Maliaño - avatar