- 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