Ken G. wrote: > Assuming I have the following list and code how do I best be able > rearrange the list as stated below: > > list = [0, 0, 21, 35, 19, 42] > > Using print list[2:6] resulted in the following: > > 2 21 > 3 35 > 4 19 > 5 42 > > I would like to rearrange the list as follow: > > 5 42 > 3 35 > 2 21 > 4 19 > > I tried using list.reverse() and print list[0,6] and it resulted in: > > [42, 19, 35, 21, 0, 0] or as printed: > > 0 42 > 1 19 > 2 35 > 3 21 > 4 0 > 5 0 > > In another words, I would desire to show that: > > 5 appears 42 times > 3 appears 35 times > 2 appears 21 times > 4 appears 19 times > > but then I lose my original index of the numbers by reversing. How do I > best keep the original index number to the rearrange numbers within a > list?
Don't rearrange the original list, make a new one instead: >>> frequencies = [0, 0, 21, 35, 19, 42] >>> wanted_indices = [5, 3, 2, 4] >>> [frequencies[i] for i in wanted_indices] [42, 35, 21, 19] Or look up the values as you print them: >>> for i in wanted_indices: ... print(i, "appears", frequencies[i], "times") ... 5 appears 42 times 3 appears 35 times 2 appears 21 times 4 appears 19 times The expression [frequencies[i] for i in wanted_indices] is called "list comprehension" and is a shortcut for a loop: >>> result = [] >>> for i in wanted_indices: ... result.append(frequencies[i]) ... >>> result [42, 35, 21, 19] _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor