Athlete Sort

Sort by

recency

|

536 Discussions

|

  • + 0 comments

    I tried without lambda

    #!/bin/python3
    
    import math
    import os
    import random
    import re
    import sys
    def change_all_attr(lst, src, dst):
        tmp =0
        tmp = lst[dst]
        lst[dst] = lst[src]
        lst[src] = tmp
    
    if __name__ == '__main__':
        nm = input().split()
    
        n = int(nm[0])
    
        m = int(nm[1])
    
        arr = []
    
        for _ in range(n):
            arr.append(list(map(int, input().rstrip().split())))
    
        k = int(input())
        lst_table = list(zip(*arr))
        #print(lst_table)
        tmp =0
        for t in range(m):
            lst_table[t] = list(lst_table[t])
    
        change = False
        for i in range(len(lst_table[k]) - 1):
            for j in range(len(lst_table[k]) - 1):
                if lst_table[k][j] > lst_table[k][j+1]:
                    for t in range(m):
                        change_all_attr(lst_table[t],j,j+1)
                    change = True
            if not change:
                break
            
        #print(lst_table)
        lst_table = list(zip(*lst_table))
        #print(lst_table)
        for t in lst_table:
            for p in range(len(t)):
                print("%d"%(t[p]),end= " ")
            print()
                    
                
            
    
  • + 0 comments
    #!/bin/python3
    
    import math
    import os
    import random
    import re
    import sys
    
    
    
    if __name__ == '__main__':
        n,m = map(int,input().split())
        arr = []
    
        for _ in range(n):
            arr.append(list(map(int, input().rstrip().split())))
    
        k = int(input())
        for info in sorted(arr,key = lambda x : x[k]):
            print(*info)
    
  • + 0 comments

    if name == 'main': n,m = map(int,input().split()) arr = []

    for _ in range(n):
        arr.append(list(map(int, input().rstrip().split())))
    
    k = int(input())
    for info in sorted(arr,key = lambda x : x[k]):
        print(*info)
    

    `

  • + 0 comments

    if name == 'main':

    n, m = map(int, input().split())
    arr = [list(map(int, input().split())) for _ in range(n)]
    k = int(input())
    
    arr.sort(key = lambda x : x[k])
    print("\n".join([" ".join(map(str, i)) for i in arr]))
    

    `

  • + 0 comments

    I am learning lambda expression... This is very powerful. I start to understand the logic that we can sort a list depending of one of his attribute, but we have to give the index of this attribute into the lambda expression. Here my code :

    import math
    import os
    import random
    import re
    import sys
    
    
    
    if __name__ == '__main__':
        first_multiple_input = input().rstrip().split()
    
        n = int(first_multiple_input[0])
    
        m = int(first_multiple_input[1])
    
        arr = []
    
        for _ in range(n):
            arr.append(list(map(int, input().rstrip().split())))
    
        k = int(input().strip())
        
        # With lambda, we can sort depending of one attribute. If I add "-" I have descending order. Here we want ascending order.
        key = lambda item: (item[k])
        #print(sorted(arr, key=key))
        arr = sorted(arr, key=key)
        
        for sublist in arr:
            print(' '.join(map(str, sublist)))