[Tutor] How to numerically sort strings that start with numbers?

Adam Bark adam.jtm30 at gmail.com
Tue Sep 14 03:35:03 CEST 2010


On 14/09/10 02:24, Pete O'Connell wrote:
> Hi I don't actaully need the list printed reversed, I need it printed
> from smallest number to largest
>
>    
Just sorting gives you the list from smallest to largest.
> For example:
> #############
>
> theList = ["21 trewuuioi","374zxc","13447"]
> print sorted(theList)
>    
>>>> ['13447', '21 trewuuioi', '374zxc']
>>>>          
> #the rabove result is not what I want
> ################
>
> If I reverse that I still don't get the items in numerical order. The
> result I want is:
>    
>>>> ['21 trewuuioi','374zxc','13447']
>>>>          
Before you said you wanted it like this:  ['3zxc','21 trewuuioi','134445']

The order above isn't in any obvious numerical order.
Anyway I think I see where you are coming from. In my previous example I 
forgot to assign the sorted list back to theList. Hopefully the 
following will make this clear.

 >>> theList = ["21 trewuuioi","3zxc","134445"]
 >>> sorted(theList)
['134445', '21 trewuuioi', '3zxc']
 >>> theList
['21 trewuuioi', '3zxc', '134445']
 >>> theList = sorted(theList)
 >>> theList
['134445', '21 trewuuioi', '3zxc']
 >>> theList[::-1]
['3zxc', '21 trewuuioi', '134445']
 >>> theList.reverse()
 >>> theList
['3zxc', '21 trewuuioi', '134445']

as you can see sorted makes a new list rather than modifying your original.
> On Tue, Sep 14, 2010 at 10:41 AM, Adam Bark<adam.jtm30 at gmail.com>  wrote:
>    
>> On 14/09/10 01:11, Pete O'Connell wrote:
>>      
>>> theList = ["21 trewuuioi","3zxc","134445"]
>>> print sorted(theList)
>>>
>>> Hi, the result of the sorted list above doesn't print in the order I
>>> want. Is there a straight forward way of getting python to print
>>> ['3zxc','21 trewuuioi','134445']
>>> rather than ['134445', '21 trewuuioi', '3zxc']?
>>>
>>> Any help would be greatly appreciated
>>> Pete
>>>
>>>        
>> print sorted(theList)[::-1]
>>
>> as list indices go [start:end:step] what this means is the whole list
>> starting from the end and working backwards.
>> You can also have a look at reversed() if you want an iterator or you can
>> use theList.reverse() if you want to reverse in place ie.
>>
>>      
>>>>> l = ["21 trewuuioi","3zxc","134445"]
>>>>> l.reverse()
>>>>> print l
>>>>>            
>> ['134445', '3zxc', '21 trewuuioi']
>>
>>
>> HTH
>> _______________________________________________
>> Tutor maillist  -  Tutor at python.org
>> To unsubscribe or change subscription options:
>> http://mail.python.org/mailman/listinfo/tutor
>>
>>      
>
>
>    



More information about the Tutor mailing list