[issue41774] While removing element from list using for and remove(), which has same items output is not right
Terry J. Reedy
report at bugs.python.org
Thu Sep 24 16:02:12 EDT 2020
Terry J. Reedy <tjreedy at udel.edu> added the comment:
I modeled the new entry on the previous one. The code and its test.
def fr(n, remove):
mylist = list(range(n))
for i in range(len(mylist)-1, -1, -1):
if remove(mylist[i]):
del mylist[i]
return mylist
def ff(n, keep):
mylist = list(range(n))
j = 0
for i, item in enumerate(mylist):
if keep(item):
mylist[j] = item
j += 1
del mylist[j:]
return mylist
for i in range(9):
expect = list(range(0, i, 2))
def remove(n): return n % 2
def keep(n): return n % 2 == 0
print(fr(i, remove) == ff(i, keep) == expect)
expect = list(range(i//2))
def remove(n): return n >= i//2
def keep(n): return n < i//2
print(fr(i, remove) == ff(i, keep) == expect)
expect = list(range(i//2, i))
def remove(n): return n < i//2
def keep(n): return n >= i//2
print(fr(i, remove) == ff(i, keep) == expect)
# all True
----------
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue41774>
_______________________________________
More information about the Python-bugs-list
mailing list