sorted , list.sort()
These two are python's built-in functions that sort the list. It's okay if it's a one-dimensional array because you don't have to think too much about it, but it's annoying when it comes to multiple orders. So, here is the explanation as a method when it is multi-order
sorted
a = [
[1,7,'z'],
[3,2,'x'],
[1,8,'r'],
[2,2,'s'],
[1,9,'b'],
[2,2,'a']
]
print sorted(a, key=lambda x:x[2])
If you write this key = lambda x: x [2]
, the list will be sorted by index = 2, here by characters.
However, I wasn't sure if passing this lambda function would work.
Apparently I was still stuck in a language where I couldn't rename old-fashioned functions.
example
def f1(data,function):
p = []
for i in data:
p.append(function(i))
return p
def f2(num):
return num/2.
a = f1 #Variable a meaning the function f1
b = f2 #Variable b meaning the function f2
print f1(3,f2) #With this result
print a(3,b) #This result is the same
So in sorted, the key wasn't specified to compare the second element, It means that a function that returns the element to be compared was specified.
sorted
sort(a,key=str.lower)
sort(a,key=lambda x:x[2])
# for i in a:
# key(i) =>Comparison factor
This means that you can even throw in your own elaborate functions.
function_x
def function_x(something):
'''
Something that returns very elaborate and unexpected results
'''
return result
a = [
[1,7,'z'],
[3,2,'x'],
[1,8,'r'],
[2,2,'s'],
[1,9,'b'],
[2,2,'a']
]
print sorted(a,key=function_x)
For example, if you create a function that returns the soccer world ranking when you throw a country name and sort it, You can sort by country name and soccer ranking. (No demand) This may be useful and unexpectedly useful.
Recommended Posts