Sử dụng Vòng lặp FOR tốt hơn trong PYTHON

Khi chúng ta thực hiện một số hành động lặp lại trong Python, chúng ta thường sử dụng vòng lặp for.

Đây là một vòng lặp for thông thường trong Python:


students = [" Hải ",

"Doanh"

," Việt "," Dũng "] forstudent instudents: print(student)

Kết quả :


Hải
Doanh
Việt
Dũng

Ngoài cách sử dụng đơn giản này, chúng ta có một số hàm dựng sẵn (built-in function) có thể sử dụng cùng với vòng lặp for.

Khi được sử dụng đúng cách, các hàm này có thể làm cho code của bạn sạch (clean) hơn nhiều.

Đọc thêm:

  • Tự học Python trong 10 phúttrong 10 phút
  • Thao tác với dữ liệu trong PythonVà hiểu về kiểu tài liệu trong Python hơn với bài viết

Bài này chúng ta sẽ cùng học sử dụng một số hàm dựng sẵn trong Python để sử dụng vòng lặp For tốt hơn.

Sử dụng Vòng lặp FOR tốt hơn trong PYTHON

Sử dụng Vòng lặp FOR tốt hơn trong PYTHON

1. Kết hợp vòng lặp for với items() values()

Giả sử, tất cả chúng ta có một dictionaries dưới đây :


scores = {" Hải ": 9," Doanh ": 1," Việt ": 6," Dũng ": 7}

Khi bạn lặp dictionaries này bằng vòng lặp for, như thế này :

forscore inscores:
    print(score)

thì,

Nó chỉ lấy các key trong dictionaries.


Hải
Doanh
Việt
Dũng

Kết quả này tương tự kết quả lặp một list ở trên.

Thay vì thế, chúng ta có thể sử dụng hàm items(), hàm này sẽ cho phép chúng ta truy cập vào cả keyvalue.

forscore inscores.items():
    print(score)

Kết quả :

( ' Hải ', 9 )( ' Doanh ', 1 )( ' Việt ', 6 )( ' Dũng ', 7 )

Bạn cũng hoàn toàn có thể đặt tên cho những item trong tuple này để hoàn toàn có thể truy vấn trực tiếp .

forname,score inscores.items():
    print(" Tên : "+ name + ", Điểm : "+ str(score))

Kết quả :

Tên : Hải, Điểm : 9Tên : Doanh, Điểm : 1Tên : Việt, Điểm : 6Tên : Dũng, Điểm : 7

Hoặc, nếu bạn chỉ quan tâm đến các giá trị của dictionaries, bạn chỉ cần sử dụng hàm values().

forscore inscores.values():
    print(score)

Kết quả chỉ in điểm số ( giá trị value ) mà thôi :

9167

2. Sử dụng vòng lặp for với hàm enumerate()

Giả sử tất cả chúng ta có một list như bên dưới đây :


grades = [" Thực tập sinh "," Học việc "," Junior "," Senior "]

Đôi khi, chúng ta muốn truy cập cả chỉ mục (index) và chính item đó.

Trong trường hợp này, bạn có thể sử dụng hàm enumerate(), trong đó bạn truyền list làm tham số.

forgrade inenumerate(grades):
    print(grade)

Kết quả :

( 0, ' Thực tập sinh ' )( 1, ' Học việc ' )( 2, ' Junior ' )( 3, ' Senior ' )

Tương tự, bạn có thể truy cập chỉ mục và item nếu bạn tham chiếu đến các item của tuple sinh ra.

Ngoài ra, bạn có thể chỉ định chỉ số bắt đầu (start) cho hàm enumerate(), nó sẽ có ích trong trường hợp của chúng ta.

foryear,name inenumerate(grades,start=1):
    print(" Năm "+str(year)+" : "+name)

Kết quả :

Năm 1 : Thực tập sinhNăm 2 : Học việcNăm 3 : JuniorNăm 4 : Senior

3. Sử dụng vòng lặp for với hàm reversed()

Giả sử tất cả chúng ta có list dưới đây :


arrived_students = [" Hải "," Doanh "," Việt "," Dũng "]

List này cho thấy danh sách sinh viên đến lớp theo thứ tự.

Sau đó, giảng viên kiểm tra bài tập về nhà mà muốn chọn từ người đến lớp muộn nhất.

Thế nên, giảng viên sẽ gọi lần lượt từ cuối danh sách.

Để làm như vậy, chúng ta có hàm reversed(), hàm này trả về một interator cho phép truy cập vào list đã cho theo chiều ngược lại.

forstudent inreversed(arrived_students):
    print(student)

Kết quả :

DũngViệtDoanhHải

Một điều cần lưu ý là bạn cần phải phân biệt hàm reversed() với hàm reverse().

Hàm reverse() đảo ngược list đã cho nhưng không trả về bất kỳ giá trị nào.

Nói cách khác, bạn có thể gọi đến arrived_students.reverse(), nhưng bạn không thể trực tiếp lặp lại nó bằng cách gọi for student in arrived_students.reverse().


 

4. Sử dụng vòng lặp for với hàm sorted()

Giả sử tất cả chúng ta có list sau :


students = [" Hải "," Doanh "," Việt "," Dũng "]

Giảng viên muốn sắp xếp sinh viên dựa trên tên của họ và thực hiện một số hành động (ví dụ: Đặt câu hỏi).

Nó có thể được thực hiện với hàm sorted() bằng cách truyền vào students, sẽ tạo ra danh sách với tên của sinh viên được sắp xếp theo thứ tự tăng dần (mặc định).

forstudent insorted(students):
    print(student)

Kết quả :

DoanhDũngHảiViệt

Bạn có thể tùy chọn đặt giá trị logic thành tham số reverse để yêu cầu sắp xếp theo thứ tự giảm dần, như thế này: sorted(students, reverse=True)

 

forstudent insorted(students,reverse=True):
    print(student)

Kết quả :

ViệtHảiDũngDoanh

Đây là list.

Vậy điều gì sẽ xảy ra khi sắp xếp với dictionaries?


students = [{" name ": " Hải "," id ": 1},{" name ": " Doanh "," id ": 4},{" name ": " Việt "," id ": 2},{" name ": " Dũng "," id ": 3}]

Về cơ bản, chúng ta sắp xếp một list các dictionaries. Điều này có thể được thực hiện bằng cách đặt tham số key bằng hàm lambda trong hàm sorted().

forstudent insorted(students,

key

= lambdai: i[" id "],reverse=True): print(student)

Kết quả :

{ ' name ' : ' Doanh ', ' id ' : 4 }{ ' name ' : ' Dũng ', ' id ' : 3 }{ ' name ' : ' Việt ', ' id ' : 2 }{ ' name ' : ' Hải ', ' id ' : 1 }

Trong ví dụ trên, chúng ta yêu cầu danh sách được sắp xếp theo id của dictionaries theo thứ tự ngược lại (Xem kết quả để hiểu rõ)

Ngoài ra, nếu bạn muốn sắp xếp với nhiều key, bạn chỉ cần thay đổi tham số key thành một cái gì đó như key = lambda i: i["name"]

forstudent insorted(students,key= lambdai: i[" name "],reverse=True):
    print(student)

Kết quả :

{ ' name ' : ' Việt ', ' id ' : 2 }{ ' name ' : ' Hải ', ' id ' : 1 }{ ' name ' : ' Dũng ', ' id ' : 3 }{ ' name ' : ' Doanh ', ' id ' : 4 }

Hoặc thậm chí bạn có thể sắp xếp theo cả 2 key.

* Ví dụ này mình đổi lại tên sinh viên (có các tên trùng nhau) trong list một chút để bạn thấy rõ hơn việc sắp xếp theo 2 key:


students = [{" name ": " Doanh "," id ": 1},{" name ": " Doanh "," id ": 2},{" name ": " Dũng "," id ":3},{" name ": " Dũng "," id ": 5},{" name ": " Vũ "," id ": 4},{" name ":" Vũ "," id ":8}]

Thực hiện vòng lặp for với hàm lambda :

forstudent insorted(students,key= lambdai: (i[" name "],i[" id "]),reverse=True):
    print(student)

Kết quả :

{ ' name ' : ' Doanh ', ' id ' : 1 }{ ' name ' : ' Doanh ', ' id ' : 2 }{ ' name ' : ' Dũng ', ' id ' : 3 }{ ' name ' : ' Dũng ', ' id ' : 5 }{ ' name ' : ' Vũ ', ' id ' : 4 }{ ' name ' : ' Vũ ', ' id ' : 8 }
  • Lập trình Hàm trong Python để hiểu hơn về hàm lambda (hay còn gọi là hàm ẩn danh).Tham khảo : để hiểu hơn về hàm lambda ( hay còn gọi là hàm ẩn danh ) .

5. Sử dụng vòng lặp for với hàm filter()

Giả sử tất cả chúng ta có list sinh viên bên dưới đây :


students = [{" name ": " Hải "," id ": 1},{" name ": " Doanh "," id ": 4},{" name ": " Việt "," id ": 2},{" name ": " Dũng "," id ": 3}]

Bây giờ, chúng ta chỉ muốn lấy ra sinh viên có id chẵn.

Chúng ta có thể sử dụng hàm filter kết hợp với lambda

forstudent infilter(lambdai: i[" id "] % 2== 0,students):
    print(student)

Kết quả :

{ ' name ' : ' Doanh ', ' id ' : 4 }{ ' name ' : ' Việt ', ' id ' : 2 }

6. Sử dụng vòng lặp for với hàm zip()

Giả sử tất cả chúng ta có 2 list :


names = [" Hải "," Doanh "," Việt "," Dũng "]
ids = [1,3,2,4]

Sử dụng hàm zip(), chúng ta có thể sử dụng thông tin từ cả hai list một cách thuận tiện.

forstudent inzip(names,ids):
    print(student)

Kết quả :

( ' Hải ', 1 )( ' Doanh ', 3 )( ' Việt ', 2 )( ' Dũng ', 4 )

Và bạn cũng có thể truy cập trực tiếp vào các item của tuple nếu bạn gán tên biến cho chúng, như name, id in zip(names, ids).

forname,id inzip(names,ids):
    print(" Tên : "+str(name)+", id : "+str(id))

Kết quả :

Tên : Hải, id : 1Tên : Doanh, id : 3Tên : Việt, id : 2Tên : Dũng, id : 4

Chúc mừng, bạn đã biết sử dụng vòng lặp for tốt hơn.

Vòng lặp for được sử dụng rất thường xuyên trong khi lập trình Python.

Hãy tận dụng các hàm trên trong vòng lặp for, bạn có khả năng có thể giảm độ dài code của mình, giúp đọc dễ dàng và thú vị hơn!

ĐỪNG QUÊN: Nếu bạn muốn làm chủ ngôn ngữ Python, Khóa học Python ở Hà Nội sẽ giúp bạn học vững chắc hơn, nhanh hơn.

Tài liệu tham khảo:được sử dụng rất tiếp tục trong khiHãy tận dụng những hàm trên trong vòng lặp for, bạn có năng lực hoàn toàn có thể giảm độ dài code của mình, giúp đọc thuận tiện và mê hoặc hơn ! ĐỪNG QUÊN : Nếu bạn muốn làm chủ ngôn từ Python, sẽ giúp bạn học vững chãi hơn, nhanh hơn. Tài liệu tìm hiểu thêm :

HỌC VIỆN ĐÀO TẠO CNTT NIIT – ICT HÀ NỘI

Dạy học Lập trình chất lượng cao ( Since 2002 ). Học làm Lập trình viên. Hành động ngay !

Đc : Tầng 3, 25T2, N05, Nguyễn Thị Thập, CG cầu giấy, TP. Hà Nội

SĐT : 02435574074 – 0914939543 – 0353655150

E-Mail : [email protected]

Fanpage: https://facebook.com/NIIT.ICT/

# niit # niithanoi # niiticthanoi # hoclaptrinh # khoahoclaptrinh # hoclaptrinhjava # hoclaptrinhphp # python # java # php