StudentList = [['Nguyễn Đức Bill', 6],['Đặng Nguyễn Nguyên Duy', 4], ['Bùi Đỗ Nhật Nam Anh', 7]] for x in StudentList: x[0] = ' '.join(reversed(x[0].split(' '))) #split = [Nguyễn, Đức, Bill] #reversesplit [Bill, Đức, Nguyễn] StudentList.sort(key = lambda x:x[1])#: hàm sort dùng để lọc một danh sách theo một cách nhất định nào đó (thông qua điều kiện "key" ở trong ngoặc) #Ở đây key là một hàm lambda, lấy đầu vào x và đầu ra là x[1], khi ta đặt hàm lambda này ở trong hàm sort, nó sẽ lấy luôn đầu vào là danh sách được sort #Nó trả về đầu ra là StudentList[1], vì StudentList là một danh sách có các danh sách con, nên việc chỉ định giá trị [1] #Sẽ lấy giá trị thứ [1] (tính từ 0) của từng danh sách con, khi key được đặt là StudentList[1], thì hàm sort sẽ sắp xếp theo thứ tự #xét theo giá trị đó (ví dụ ở đây StudentList[1] là [6, 4, 7] là các giá trị biến nguyên, nó sẽ được sắp xếp theo thứ tự tăng dần của cách giá trị) #trong đó sự sắp xếp được thực hiện cho cả danh sách con mà các giá trị đó thuộc về, nghĩa là nếu ['Duy', 4] có giá trị StudentList[1] là 4, #có giá trị thấp nhất thì khi sắp xếp xong, cả danh sách con sẽ ở vị trị đầu tiên FlunkStudents = list(filter(lambda x:x[1] < 5, StudentList)) #hàm filter lọc một danh sách bằng cách giữ những phần tử thỏa mãn một điều kiện nhất định, ở đây điều kiện là lambda x:x[1] < 5 #hàm filter có StudentList là danh sách đầu vào được lọc, đầu vào này cũng được truyền luôn vào hàm lambda, nên output của hàm sẽ là StudentList[1] #cái output đó được so sánh <5, nếu thỏa mãn thì giữ ở lại, xong đầu ra của hàm filter cho vào danh sách mới FlunkStudents for index, value in enumerate(StudentList): #Hàm enumerate trả về hai giá trị index and value từ danh sách, hàm index là vị trị trong danh sách của biến đang chạy, #và hàm value lấy giá trị của biến đó if index < len(StudentList) - 1: print(value[0], str(value[1]) + ', ', end='') else: print(value[0], str(value[1])) #in value[0] và value[1], vì value có giá trị là danh sách con, nên đánh số sẽ chọn phần tử ở vị trí của danh sách, "end=''" để kết thúc lệnh in #bằng khoảng trống print('Học sinh trượt:', end=' ') for index, value in enumerate(FlunkStudents): #Hàm enumerate trả về hai giá trị index and value từ danh sách, hàm index là vị trị trong danh sách của biến đang chạy, #và hàm value lấy giá trị của biến đó if index < len(FlunkStudents) - 1: print(value[0], str(value[1]) + ', ', end='') else: print(value[0], str(value[1])) #in value[0] và value[1], vì value có giá trị là danh sách con, nên đánh số sẽ chọn phần tử ở vị trí của danh sách, "end=''" để kết thúc lệnh in #bằng khoảng trống