# Schwartzian Transform in python

By: Python Documentation Team Emailed: 1766 times Printed: 2513 times

 By: rohit kumar - how this program is work By: Kirti - Hi..thx for the hadoop in By: Spijker - I have altered the code a By: ali mohammed - why we use the java in ne By: ali mohammed - why we use the java in ne By: mizhelle - when I exported the data By: raul - no output as well, i'm ge By: Rajesh - thanx very much... By: Suindu De - Suppose we are executing

The technique, attributed to Randal Schwartz of the Perl community, sorts the elements of a list by a metric which maps each element to its "sort value". In Python, just use the key argument for the sort() method:

```Isorted = L[:] Isorted.sort(key=lambda s: int(s[10:15])) ```
The key argument is new in Python 2.4, for older versions this kind of sorting is quite simple to do with list comprehensions. To sort a list of strings by their uppercase values:

```tmp1 = [(x.upper(), x) for x in L]  # Schwartzian transform tmp1.sort() Usorted = [x[1] for x in tmp1] ```
To sort by the integer value of a subfield extending from positions 10-15 in each string:

```tmp2 = [(int(s[10:15]), s) for s in L]  # Schwartzian transform tmp2.sort() Isorted = [x[1] for x in tmp2] ```
For versions prior to 3.0, Isorted may also be computed by

``` def intfield(s):     return int(s[10:15]) def Icmp(s1, s2):     return cmp(intfield(s1), intfield(s2)) Isorted = L[:] Isorted.sort(Icmp) ```

but since this method calls intfield() many times for each element of L, it is slower than the Schwartzian Transform.

 Sponsored Links If this tutorial doesn't answer your question, or you have a specific question, just ask an expert here. Post your question to get a direct answer.

Be the first one to add a comment

Your email(required, will not be shown to the public):

Your sites URL (optional):

More Tutorials by Python Documentation Team
 with in Python goto in Python Garbage Collection in Python switch case statement in Python Overloading in python Static in python Delegation in python Schwartzian Transform in python Multidimensional list (array) in python Array in python Remove duplicates from a list in python Iterate over a sequence in reverse order in python Convert between tuples and lists in python Perl's chomp() equivalent for removing trailing newlines from strings in python Convert number to string in python

More Tutorials in Python
 What is the need for Python language? How to compile python script and create .pyc file? How to find the current module name in python How to force rereading of a changed module in python UnboundLocalError in python call by reference in python Callable objects in python Ternary operator in python Hexadecimal and Octal integers in python Convert string to number in python Convert number to string in python Perl's chomp() equivalent for removing trailing newlines from strings in python Convert between tuples and lists in python Iterate over a sequence in reverse order in python Remove duplicates from a list in python

More Latest News
Most Viewed Articles (in Python )
 Variables And Names in Python Schwartzian Transform in python Installing gedit for python programming in Windows Installing gedit for python programming in Linux Your First Program in Python Comments And Pound Characters in Python Numbers And Math in Python Variables And Printing in Python Strings And Text in Python Printing in Python Formatted printing in Python Using Unicode Literals in Python Unknown command: 'migrate' error: â_mysql_ConnectionObjectâ has no member named What is the need for Python language?
Most Emailed Articles (in Python)
 Convert number to string in python How to force rereading of a changed module in python Hexadecimal and Octal integers in python Formatted printing in Python Ternary operator in python Convert string to number in python Remove duplicates from a list in python Your First Program in Python Numbers And Math in Python Variables And Names in Python error: â_mysql_ConnectionObjectâ has no member named call by reference in python Perl's chomp() equivalent for removing trailing newlines from strings in python Iterate over a sequence in reverse order in python Schwartzian Transform in python