Oct-10-2021, 05:00 AM
Is there a reason you can't use lazy sequences? It would really help if you showed code for what you're doing. It's difficult to discuss hypothetical things.
(Oct-10-2021, 05:00 AM)ndc85430 Wrote: [ -> ]Is there a reason you can't use lazy sequences? It would really help if you showed code for what you're doing. It's difficult to discuss hypothetical things.
for x in range(len(the_list)-1,-1,-1):
(i like variable name x, think: index). if i delete the_list[x] inside the body of this for loop, it does not affect the iteration as the range iterator is now independent of the actual list and x only moves to non-mutated parts of the list. another approach i am considering is: instead of deleting the item in the list, store None in its place and change the code that uses the list to evaluate the list by treating None as absent data. and, sure, i could do that as its own iterator in many cases. (Oct-10-2021, 06:11 PM)Skaperen Wrote: [ -> ]one of the ways could include for x in range(len(the_list)-1,-1,-1):
(i like variable name x, think: index). if i delete the_list[x] inside the body of this for loop
Yes to make code more ugly and less readable could do that 🧺names = ["Alice", "Bob", "Andrew", "Charlie"] for item in range(len(names)-1,-1,-1): if not names[item].startswith('A'): del names[item] print(names)
Output:['Alice', 'Andrew']
It's faster than remove()
solution,but still slower than:names = ["Alice", "Bob", "Andrew", "Charlie"] names = [name for name in names if name.startswith('A')] print(names)
Output:['Alice', 'Andrew']
If think in place
is cool,so is there a way with this the last one.names = ["Alice", "Bob", "Andrew", "Charlie"] print(id(names)) names[:] = [name for name in names if name.startswith('A')] print(names) print(id(names))
Output:2496125597184
['Alice', 'Andrew']
2496125597184