If I have a long unsorted list of 300k elements, will sorting this list first and then do a “for” loop on list speed up code? I need to do a “for loop” regardless, cant use list comprehension.
sortedL=[list].sort()
for i in sortedL:
(if i is somenumber)
"do some work"
How could I signal to python that sortedL is sorted and not read whole list. Is there any benefit to sorting a list? If there is then how can I implement?
It would appear that you’re considering sorting the list so that you could then quickly look for
somenumber.Whether the sorting will be worth it depends on whether you are going to search once, or repeatedly:
If you’re only searching once, sorting the list will not speed things up. Just iterate over the list looking for the element, and you’re done.
If, on the other hand, you need to search for values repeatedly, by all means pre-sort the list. This will enable you to use
bisectto quickly look up values.The third option is to store elements in a
dict. This might offer the fastest lookups, but will probably be less memory-efficient than using a list.