Hãy nói rằng chúng ta có một danh sách. Chúng tôi muốn lặp lại danh sách này, in ra chỉ mục theo sau là phần tử danh sách hoặc giá trị tại chỉ mục đó. Hãy thực hiện điều này bằng cách sử dụng vòng lặp for Show
num_list= [42, 56, 39, 59, 99]for i in range(len(num_list)): range() là một hàm có sẵn trong python cho phép chúng ta lặp qua một dãy số. Như đã thấy ở trên, chúng tôi sử dụng vòng lặp for để lặp qua một đối tượng phạm vi (là một loại có thể lặp lại), cho đến độ dài của danh sách của chúng tôi. Nói cách khác, chúng tôi bắt đầu với giá trị i là 0 và tăng dần (nhưng không bao gồm) độ dài của num_list, là 5. Sau đó, chúng tôi truy cập các phần tử của num_list tại chỉ mục thứ i bằng cách sử dụng dấu ngoặc vuông Tuy nhiên, điều quan trọng là phải hiểu rằng chúng tôi không thực sự lặp lại num_list. Nói cách khác, tôi đóng vai trò là proxy cho chỉ mục mà chúng tôi có thể sử dụng để truy cập các phần tử từ num_list Cách cắt chuỗi trong PythonTìm hiểu cách cắt danh sách và chuỗi trong Pythonhướng tới khoa học dữ liệu. com Sử dụng hàm enumerate()Thay vì sử dụng hàm range(), chúng ta có thể sử dụng hàm enumerate() có sẵn trong python. enumerate() cho phép chúng ta lặp qua một chuỗi nhưng nó theo dõi cả chỉ mục và phần tử
Hàm enumerate() nhận một đối số có thể lặp lại, chẳng hạn như danh sách, chuỗi, bộ hoặc từ điển. Ngoài ra, nó cũng có thể nhận một đối số tùy chọn, bắt đầu, chỉ định số mà chúng ta muốn bắt đầu đếm (mặc định là 0) Sử dụng hàm enumerate(), chúng ta có thể viết lại vòng lặp for như sau num_list= [42, 56, 39, 59, 99]for index, element in enumerate(num_list): Và đó là nó. Chúng ta không cần sử dụng hàm range(). Mã trông sạch hơn và Pythonic hơn Từ điển hiểu trong PythonCách sử dụng khả năng hiểu từ điển để tạo từ điển trong pythonhướng tới khoa học dữ liệu. com Cách liệt kê() hoạt độngHàm enumerate() trả về một đối tượng liệt kê, là một trình vòng lặp. Khi mỗi phần tử được truy cập từ đối tượng liệt kê này, một bộ dữ liệu được trả về, chứa chỉ mục và phần tử tại chỉ mục đó. (chỉ mục, phần tử). Do đó, trong vòng lặp for ở trên, với mỗi lần lặp, nó sẽ gán các phần tử của bộ dữ liệu được trả về này cho các biến chỉ mục và phần tử. Nói cách khác, bộ trả về đang được giải nén bên trong câu lệnh for for index, element in enumerate(num_list):# similar to: Các bộ dữ liệu này có thể dễ dàng nhìn thấy hơn với ví dụ sau name_list = ['Jane', 'John', 'Mike']list(enumerate(name_list))# [(0, 'Jane'), (1, 'John'), (2, 'Mike')] Khi chúng ta gọi hàm list() trên đối tượng liệt kê (bộ lặp), nó sẽ trả về một danh sách các bộ, với mỗi bộ bao gồm chỉ mục và phần tử hoặc giá trị tương ứng của nó Nếu bạn thích đọc những câu chuyện như thế này và muốn hỗ trợ tôi với tư cách là một nhà văn, hãy cân nhắc đăng ký để trở thành thành viên Medium. Đó là 5 đô la một tháng, cho phép bạn truy cập không giới hạn vào các câu chuyện trên Phương tiện. Nếu bạn đăng ký bằng liên kết của tôi, tôi sẽ kiếm được một khoản hoa hồng nhỏ Python được biết đến là một ngôn ngữ lập trình chậm. Mặc dù thực tế là Python chậm hơn các ngôn ngữ khác, nhưng vẫn có một số cách để tăng tốc code Python của chúng ta Làm sao? Nếu chúng ta viết mã tiêu tốn ít bộ nhớ và dung lượng lưu trữ, chúng ta không chỉ hoàn thành công việc mà còn làm cho mã Python của chúng ta chạy nhanh hơn Đây là một cách nhanh và cũng siêu nhanh để lặp lại trong Python mà tôi đã học được trong một trong các khóa học Python mà tôi đã tham gia (chúng tôi không bao giờ ngừng học. ) Vòng lặp trung bìnhGiả sử chúng ta muốn tính tổng các số từ 1 đến 100000000 (có thể chúng ta sẽ không bao giờ làm điều đó nhưng con số lớn đó sẽ giúp tôi đưa ra quan điểm của mình) Một cách tiếp cận điển hình là tạo một biến Điều này hoàn thành công việc, nhưng phải mất khoảng 6. 58 giây Mặc dù hiện tại có vẻ không quá chậm nhưng tốc độ sẽ chậm hơn khi bạn thêm nhiều số 0 vào số bên trong phạm vi Hãy tăng tốc độ này lên Một cách nhanh hơn để lặp lại bằng cách sử dụng các chức năng tích hợpMột cách nhanh hơn để lặp trong Python là sử dụng các hàm tích hợp sẵn Trong ví dụ của chúng tôi, chúng tôi có thể thay thế vòng lặp for bằng hàm Đoạn mã trên mất 0. 84 giây. Đó là cách nhanh hơn so với vòng lặp trước mà chúng tôi đã sử dụng. Đây là lý do tại sao chúng ta nên chọn các hàm tích hợp thay vì các vòng lặp Nhưng vẫn còn chỗ để cải thiện Một cách lặp siêu nhanh bằng NumpyVài tuần trước, trong một khóa học về khoa học dữ liệu, tôi đã học được rằng một trong những phương pháp thực hành công nghệ phần mềm mà tôi nên tuân theo để trở thành một nhà khoa học dữ liệu giỏi hơn là tối ưu hóa mã của mình Chúng ta có thể tối ưu hóa các vòng lặp bằng cách vector hóa các thao tác. Đây là một/hai bậc độ lớn nhanh hơn so với Python thuần túy tương đương của chúng (đặc biệt là trong các phép tính số) Vectorization là thứ chúng ta có thể nhận được với NumPy. Numpy là một thư viện có cấu trúc dữ liệu hiệu quả được thiết kế để chứa dữ liệu ma trận. Nó chủ yếu được viết bằng C, vì vậy tốc độ là thứ bạn có thể tin tưởng Hãy thử sử dụng các phương thức Numpy Điều này hoàn thành công việc trong 0. 22 giây. Đây là cách nhanh hơn so với các phương pháp trước đây Đây là lý do tại sao bạn nên sử dụng các phép toán vectơ trên các vòng lặp bất cứ khi nào có thể Đưa các vòng lặp và Numpy vào thử nghiệm với nhiều tính toán hơnCho đến giờ chúng ta đã thấy một ứng dụng đơn giản của Numpy, nhưng điều gì sẽ xảy ra nếu chúng ta không chỉ có một vòng lặp for mà còn có một điều kiện if và nhiều tính toán hơn để thực hiện? Đây là khi Numpy rõ ràng vượt trội so với các vòng lặp Hãy tưởng tượng chúng ta có một mảng điểm thi ngẫu nhiên (từ 1 đến 100) và chúng ta muốn lấy điểm trung bình của những người thi trượt (điểm <70) Đây là cách chúng tôi làm điều này với vòng lặp for Điều đó mất khoảng 15. 7 giây. Không tệ, nhưng chúng ta có thể nhận được kết quả nhanh hơn với Numpy Đây là cách chúng tôi làm điều này với Numpy Đoạn mã trên mất khoảng 0. 78 giây. Đó là cách nhanh hơn và mã đơn giản Học Khoa học dữ liệu với Python? Nếu bạn thích đọc những câu chuyện như thế này và muốn hỗ trợ tôi với tư cách là một nhà văn, hãy cân nhắc đăng ký để trở thành thành viên Medium. Đó là 5 đô la một tháng, cho phép bạn truy cập không giới hạn vào hàng nghìn hướng dẫn về Python và các bài báo về Khoa học dữ liệu. Nếu bạn đăng ký bằng liên kết của tôi, tôi sẽ kiếm được một khoản hoa hồng nhỏ mà bạn không phải trả thêm phí Điểm liệt kê Python là gì?Python's enumerate() cho phép bạn viết Pythonic cho các vòng lặp khi bạn cần số đếm và giá trị từ một lần lặp . Ưu điểm lớn của enumerate() là nó trả về một bộ có bộ đếm và giá trị, do đó bạn không phải tự tăng bộ đếm.
Python zip có nhanh hơn không?Mặc dù những người khác đã chỉ ra rằng zip trên thực tế mang tính Pythonic hơn liệt kê , nhưng tôi đến đây để xem liệu nó có hiệu quả hơn không. Theo thử nghiệm của tôi, zip nhanh hơn khoảng 10 đến 20% so với liệt kê khi chỉ cần truy cập và sử dụng song song các mục từ nhiều danh sách .
Sự khác biệt giữa liệt kê và phạm vi trong Python là gì?Thay vì sử dụng hàm range(), chúng ta có thể sử dụng hàm enumerate() có sẵn trong python. enumerate() cho phép chúng ta lặp qua một chuỗi nhưng nó theo dõi cả chỉ mục và phần tử . Hàm enumerate() nhận một đối số có thể lặp lại, chẳng hạn như danh sách, chuỗi, bộ hoặc từ điển.
Điều gì xảy ra khi bạn liệt kê một danh sách trong Python?Hàm liệt kê trong Python chuyển đối tượng thu thập dữ liệu thành đối tượng liệt kê . Liệt kê trả về một đối tượng chứa bộ đếm làm khóa cho từng giá trị trong một đối tượng, làm cho các mục trong bộ sưu tập dễ dàng truy cập hơn. |