Kiểu dữ liệu List trong Python

<p style="text-align: justify;">Python hỗ trợ rất nhiều kiểu dữ liệu kh&aacute;c nhau. Ch&uacute;ng ta đ&atilde; học về kiểu dữ liệu số, kiểu chuỗi k&yacute; tự trong những b&agrave;i trước. Trong nhiều b&agrave;i to&aacute;n thực tế, ch&uacute;ng ta phải l&agrave;m việc tr&ecirc;n một tập dữ liệu, thậm ch&iacute; hỗn hợp dữ liệu phức tạp. Điều n&agrave;y sẽ tương đối phức tạp nếu ch&uacute;ng ta phải c&agrave;i đặt lại từ đầu c&aacute;c thao t&aacute;c để xử l&yacute; c&aacute;c kiểu dữ liệu n&agrave;y. Rất may, trong Python hỗ trợ c&aacute;c cấu tr&uacute;c dữ liệu phức hợp kh&aacute; đầy đủ. Trong chủ đề n&agrave;y, ch&uacute;ng ta sẽ tiếp tục với một số kiểu dữ liệu phức hợp được hỗ trợ trong Python như: Danh s&aacute;ch (List), Tập hợp (Set), Tuple hay từ điển (Dictionary). Đ&acirc;y l&agrave; c&aacute;c kiểu dữ liệu phức hợp l&agrave; tập hợp của nhiều dữ liệu cơ bản. N&oacute; c&oacute; một &yacute; nghĩa rất lớn trong c&aacute;c ng&ocirc;n ngữ lập tr&igrave;nh n&oacute;i chung v&agrave; Python n&oacute;i ri&ecirc;ng. Bởi n&oacute; cung cấp khả năng l&agrave;m việc tr&ecirc;n tập dữ liệu chứ kh&ocirc;ng chỉ l&agrave; c&aacute;c điểm dữ liệu đơn lẻ. Đ&acirc;y l&agrave; điều thường gặp trong thực tế hơn v&agrave; c&oacute; ứng dụng nhiều hơn.</p> <p style="text-align: justify;">Trong b&agrave;i viết n&agrave;y, ch&uacute;ng ta sẽ bắt đầu với kiểu dữ liệu phức hợp đầu ti&ecirc;n đ&oacute; l&agrave; Danh s&aacute;ch (List) trong Python.</p> <p style="text-align: justify;"><img style="width: 100%;" src="../../../public_files/7b130f59-2a9d-4fbc-a50b-1cb4747ec77e" alt="lists-in-python" /></p> <h2 style="text-align: justify;">Danh s&aacute;ch List trong Python l&agrave; g&igrave;?</h2> <p style="text-align: justify;">Về cơ bản, list hay danh s&aacute;ch trong Python l&agrave; một tập hợp dữ liệu c&oacute; thứ tự v&agrave; c&oacute; thể truy cập v&agrave; thay đổi được. Một số t&iacute;nh chất của List trong Python:</p> <ul> <li style="text-align: justify;"><strong>C&oacute; thể thay đổi: </strong>C&aacute;c phần tử trong list c&oacute; thể được thay đổi gi&aacute; trị. Ch&uacute;ng ta cũng c&oacute; thể thay đổi gi&aacute; trị, th&ecirc;m hoặc x&oacute;a c&aacute;c phần tử khỏi danh s&aacute;ch sau khi n&oacute; được tạo.</li> <li style="text-align: justify;"><strong>Được sắp xếp:</strong> C&aacute;c phần tử trong danh s&aacute;ch được sắp xếp. Mỗi phần tử c&oacute; một chỉ số ri&ecirc;ng. C&aacute;c phần tử mới sẽ được th&ecirc;m ở ph&iacute;a cuối danh s&aacute;ch.</li> <li style="text-align: justify;"><strong>Chứa c&aacute;c đối tượng c&oacute; kiểu dữ liệu kh&aacute;c nhau</strong>: Danh s&aacute;ch c&oacute; thể chứa c&aacute;c phần tử c&oacute; kiểu dữ liệu kh&aacute;c nhau, ch&uacute;ng c&oacute; thể chứa c&aacute;c phần tử kiểu chuỗi k&yacute; tự, số nguy&ecirc;n, boolean,....</li> <li style="text-align: justify;"><strong>Chứa c&aacute;c phần tử lặp lại:</strong> Danh s&aacute;ch c&oacute; thể chứa c&aacute;c phần tử lặp lại, tức l&agrave; danh s&aacute;ch c&oacute; thể c&oacute; hai phần tử c&oacute; c&ugrave;ng gi&aacute; trị.</li> </ul> <p style="text-align: justify;"><strong>Tại sao cần sử dụng danh s&aacute;ch?</strong></p> <ul> <li style="text-align: justify;">Cấu tr&uacute;c dữ liệu danh s&aacute;ch rất linh hoạt: N&oacute; cung cấp nhiều phương thức c&oacute; sẵn như pop(), append(),... gi&uacute;p thao t&aacute;c với danh s&aacute;ch dễ d&agrave;ng hơn.</li> <li>Danh s&aacute;ch c&oacute; thể chứa nhiều kiểu dữ liệu kh&aacute;c nhau, tức l&agrave; c&oacute; thể th&ecirc;m c&aacute;c đối tượng hay phần tử c&oacute; kiểu dữ liệu l&agrave; kh&aacute;c nhau.</li> <li>V&igrave; danh s&aacute;ch c&oacute; thể thay đổi, n&ecirc;n n&oacute; được sử dụng trong c&aacute;c ứng dụng, m&agrave; trong đ&oacute; gi&aacute; trị của c&aacute;c phần tử thay đổi thường xuy&ecirc;n.</li> </ul> <h2 style="text-align: justify;">Tạo một đối tượng Danh s&aacute;ch List trong Python</h2> <p style="text-align: justify;">Ch&uacute;ng ta c&oacute; thể tạo list trong Python bằng một trong hai c&aacute;ch:</p> <ul> <li style="text-align: justify;"><strong>Sử dụng h&agrave;m tạo <code>list()</code>: </strong>Ch&uacute;ng ta c&oacute; thể tạo một danh s&aacute;ch bằng c&aacute;ch đưa v&agrave;o c&aacute;c phần tử v&agrave;o trong phương thức <code>list()</code>.</li> <li style="text-align: justify;"><strong>Sử dụng dấu ngoặc vu&ocirc;ng (<code>[]</code>)</strong>: Ch&uacute;ng ta c&oacute; thể đơn giản đưa c&aacute;c phần tử ngăn c&aacute;ch nhau bởi dấu phẩy v&agrave;o cặp ngoặc vu&ocirc;ng ([]) để tạo một danh s&aacute;ch. Trong Python, một đối tượng dữ liệu List hay một tập hợp List được tạo bằng c&aacute;ch đặt tất cả c&aacute;c phần tử b&ecirc;n trong dấu ngoặc vu&ocirc;ng [], v&agrave; c&aacute;c phần tử n&agrave;y được ph&acirc;n t&aacute;ch với nhau bởi dấu phẩy. N&oacute; c&oacute; thể c&oacute; chứa bất kỳ số lượng phần tử n&agrave;o v&agrave; ch&uacute;ng c&oacute; thể thuộc c&aacute;c kiểu kh&aacute;c nhau (số nguy&ecirc;n, số float, chuỗi k&yacute; tự, v.v.). Đ&acirc;y l&agrave; một điều rất đặc biệt trong Python so với c&aacute;c ng&ocirc;n ngữ kh&aacute;c. Trong c&aacute;c ng&ocirc;n ngữ kh&aacute;c, th&ocirc;ng thường, c&aacute;c kiểu dữ liệu dạng tập hợp đều cần c&oacute; mối li&ecirc;n hệ với nhau v&agrave; thường l&agrave; c&ugrave;ng kiểu dữ liệu. Nhưng trong Python, ch&uacute;ng ta kh&ocirc;ng cần điều n&agrave;y.</li> </ul> <p style="text-align: justify;">V&iacute; dụ 1:</p> <pre class="language-python"><code>my_list1 = list((1, 2, 3)) print(my_list1) my_list2 = [1, 2, 3] print(my_list2) my_list3 = [300, "Python", 500.5] print(my_list3) my_list4 = list() print(my_list4) vi_du = [] print(vi_du)</code></pre> <p style="text-align: justify;">Ở v&iacute; dụ tr&ecirc;n, ch&uacute;ng ta đ&atilde; lần lượt khai b&aacute;o, một danh s&aacute;ch List gồm 3 phần tử 1,2,3 ngăn c&aacute;ch nhau bởi dấu phẩy theo cả 2 c&aacute;ch; một danh s&aacute;ch gồm cả số nguy&ecirc;n, số thực lẫn chuỗi k&yacute; tự; v&agrave; cuối c&ugrave;ng l&agrave; một danh s&aacute;ch rỗng (kh&ocirc;ng c&oacute; phần tử n&agrave;o). Kết quả đoạn m&atilde; tr&ecirc;n như sau:</p> <pre class="language-markup"><code>[1, 2, 3] [1, 2, 3] [300, 'Python', 500.5] [] []</code></pre> <p style="text-align: justify;">Ta thấy, hai c&aacute;ch khai b&aacute;o đều cho ra kết quả giống nhau v&agrave; một điều đặc biệt trong Python đ&oacute; l&agrave; n&oacute; chấp nhận mọi loại dữ liệu theo danh s&aacute;ch.</p> <p style="text-align: justify;">Thậm ch&iacute;, một đối tượng kiểu List cũng c&oacute; thể chứa một đối tượng kiểu List kh&aacute;c dưới dạng l&agrave; một phần tử. Đ&acirc;y được gọi l&agrave; danh s&aacute;ch lồng nhau.</p> <p style="text-align: justify;">V&iacute; dụ 2:</p> <pre class="language-python"><code>vi_du = [] vi_du = [100, 100.5, 200] vi_du = [300, "Python", [500.5, 200, "Javascript"]]</code></pre> <p style="text-align: justify;">Ở đ&acirc;y, trong c&acirc;u lệnh thứ 3, ch&uacute;ng ta đ&atilde; khai b&aacute;o một danh s&aacute;ch c&oacute; t&ecirc;n l&agrave; vi_du bao gồm một danh s&aacute;ch kh&aacute;c [500.5, 200, "Javascript"]</p> <p style="text-align: justify;">Như vậy, c&oacute; thể thấy danh s&aacute;ch List trong Python cực kỳ mềm dẻo, n&oacute; c&oacute; thể l&agrave;m việc một c&aacute;ch dễ d&agrave;ng với gần như mọi loại dữ liệu kh&aacute;c nhau.</p> <h2 style="text-align: justify;">Số phần tử hay độ d&agrave;i của danh s&aacute;ch</h2> <p style="text-align: justify;">Python cũng cung cấp h&agrave;m cho ph&eacute;p x&aacute;c định độ d&agrave;i hay số phần tử của danh s&aacute;ch. Đ&oacute; l&agrave; h&agrave;m len(). Ch&uacute;ng ta cũng đ&atilde; xem x&eacute;t h&agrave;m n&agrave;y ở phần chuỗi k&yacute; tự. V&agrave; ở đ&acirc;y, n&oacute; được ở sử dụng với chức năng tương tự.</p> <p style="text-align: justify;">V&iacute; dụ 3:</p> <pre class="language-python"><code>my_list = [100, 200, "Python"] print(len(my_list))</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>3</code></pre> <h2 style="text-align: justify;">Truy cập c&aacute;c phần tử của tập hợp List trong Python?</h2> <p style="text-align: justify;">C&aacute;c phần tử trong danh s&aacute;ch c&oacute; thể được truy cập bằng c&aacute;ch sử dụng c&aacute;c chỉ số tương ứng của n&oacute;. List l&agrave; một danh s&aacute;ch c&aacute;c phần tử được sắp xếp thứ tự với chỉ số của mỗi phần từ l&agrave; duy nhất. Do đ&oacute;, ch&uacute;ng ta c&oacute; thể truy cập c&aacute;c phần tử th&ocirc;ng qua chỉ số của n&oacute;.</p> <p style="text-align: justify;">Trong Python, c&aacute;c chỉ số sẽ được đ&aacute;nh từ tr&aacute;i qua phải bắt đầu từ gi&aacute; trị l&agrave; 0 cho tới <strong>độ d&agrave;i của list -1</strong>. V&igrave; vậy, một một đối tượng kiểu List c&oacute; 5 phần tử sẽ c&oacute; chỉ số từ 0 đến 4. V&agrave; nếu ch&uacute;ng ta muốn truy cập v&agrave;o phần tử thứ 3 của danh s&aacute;ch th&igrave; ch&uacute;ng ta phải sử dụng chỉ số l&agrave; 2 v&igrave; danh s&aacute;ch được đ&aacute;nh số từ 0.</p> <p><strong>Một số lưu &yacute;</strong>:</p> <ul> <li>Chỉ số của danh s&aacute;ch bắt đầu từ 0 cho đến độ d&agrave;i chuỗi -1</li> <li>Khi ch&uacute;ng ta truy cập một danh s&aacute;ch với chỉ số vượt qu&aacute; phạm vi của độ d&agrave;i của n&oacute;, chương tr&igrave;nh sẽ b&aacute;o lỗi <code>'Index Error'</code>.</li> <li>Tương tự, c&aacute;c chỉ số l&agrave; số nguy&ecirc;n, do đ&oacute;, nếu ch&uacute;ng ta sử dụng c&aacute;c kiểu dữ liệu kh&aacute;c cho chỉ số th&igrave; chương tr&igrave;nh sẽ b&aacute;o lỗi <code>Type Error</code>.</li> </ul> <p style="text-align: justify;">V&iacute; dụ 4:</p> <pre class="language-python"><code>vi_du = [100, 300, "Python", "Javascript"] print(vi_du[0]) print(vi_du[3]) vi_du2 = ["Python", [100, 200, 300, 400]] print(vi_du2[0]) print(vi_du2[1][2])</code></pre> <p style="text-align: justify;">Kết quả:</p> <pre class="language-markup"><code>100 Javascript Python 300</code></pre> <p style="text-align: justify;">Trong v&iacute; dụ tr&ecirc;n, để truy cập được phần tử thứ 4 của danh s&aacute;ch, ch&uacute;ng ta cần phải truyền v&agrave;o gi&aacute; trị chỉ số l&agrave; 3. Tương tự, ch&uacute;ng ta truyền v&agrave;o chỉ số l&agrave; 0 để truy cập phần tử đầu ti&ecirc;n trong danh s&aacute;ch.</p> <p style="text-align: justify;">C&aacute;ch truy cập n&agrave;y tương tự như ch&uacute;ng ta đ&atilde; sử dụng với c&aacute;c chuỗi k&yacute; tự trước đ&acirc;y. C&aacute;c quy tắc trong truy cập chuỗi k&yacute; tự cũng c&oacute; thể được &aacute;p dụng với kiểu danh s&aacute;ch List.</p> <p style="text-align: justify;">Ngo&agrave;i ra, ở v&iacute; dụ tr&ecirc;n, trong c&acirc;u lệnh thứ 6, ch&uacute;ng ta đ&atilde; tiến h&agrave;nh truy cập 1 phần tử trong danh s&aacute;ch con, bởi n&oacute; cũng l&agrave; một danh s&aacute;ch v&agrave; c&oacute; chỉ số ri&ecirc;ng. V&igrave; vậy ở đ&acirc;y ch&uacute;ng ta c&oacute; 2 dấu ngoặc vu&ocirc;ng [].</p> <p style="text-align: justify;">Ch&uacute;ng ta cũng c&oacute; thể sử dụng c&aacute;c chỉ số c&oacute; gi&aacute; trị &acirc;m để truy cập c&aacute;c phần tử của List. Python cho ph&eacute;p sử dụng chỉ số c&oacute; gi&aacute; trị &acirc;m cho c&aacute;c phần tử của n&oacute;. Chỉ số -1 tham chiếu đến phần tử cuối c&ugrave;ng, -2 tham chiếu đến phần tử cuối c&ugrave;ng thứ hai,...</p> <p><img style="width: 100%; display: block; margin-left: auto; margin-right: auto;" src="../../../public_files/05ce5d08-507e-4515-b20a-25a1345dd618" alt="chỉ số của danh s&aacute;ch trong Python" /></p> <p style="text-align: justify;">V&iacute; dụ 5:</p> <pre class="language-python"><code>vi_du2 = ["Python", [100, 200, 300, 400]] print(vi_du2[-1]) print(vi_du2[-2])</code></pre> <p style="text-align: justify;">Kết quả:</p> <pre class="language-markup"><code>[100, 200, 300, 400] Python</code></pre> <p>Nhắc lại, ch&uacute;ng ta kh&ocirc;ng được ph&eacute;p truy cập chỉ số nằm ngo&agrave;i danh s&aacute;ch. Nếu kh&ocirc;ng chương tr&igrave;nh sẽ b&aacute;o lỗi!!!</p> <p>V&iacute; dụ 6:</p> <pre class="language-python"><code>vi_du = [100, 300, "Python", "Javascript"] print(vi_du[5])</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>Traceback (most recent call last): File "e:/Learning/IT/Python/Bai2.py", line 2, in &lt;module&gt; print(vi_du[5]) IndexError: list index out of range</code></pre> <h2 style="text-align: justify;">Lấy ra một danh s&aacute;ch con trong List</h2> <p style="text-align: justify;">Tương tự như đ&atilde; học trong phần chuỗi k&yacute; tự. Ch&uacute;ng ta cũng c&oacute; thể lấy ra một tập con của List bằng c&aacute;ch sử dụng to&aacute;n tử chia đ&ocirc;i, k&yacute; hiệu l&agrave; dấu hai chấm (:). Hay c&ograve;n gọi l&agrave; ph&eacute;p cắt. Ph&eacute;p cắt cho ph&eacute;p ch&uacute;ng ta lấy ra một danh s&aacute;ch con trong một khoảng n&agrave;o đ&oacute; trong danh s&aacute;ch gốc.</p> <p style="text-align: justify;">Dạng tổng qu&aacute;t của ph&eacute;p cắt:</p> <div class="code-toolbar"> <pre id="syntax" class="wp-block-code language-python"><code>listname[start_index : end_index : step]</code></pre> <p>Trong đ&oacute;:</p> </div> <ul> <li style="text-align: justify;">Chỉ số <code>start_index</code> biểu diễn gi&aacute; trị của chỉ số bắt đầu của ph&eacute;p cắt v&agrave; <code>end_index</code> đại diện cho chỉ số cuối c&ugrave;ng của ph&eacute;p cắt. C&aacute;c phần tử được lấy sẽ được t&iacute;nh từ start_index cho đến phần tử end_index-1 (kh&ocirc;ng t&iacute;nh phần tử tại vị tri c&oacute; chỉ số l&agrave; end_index.</li> <li style="text-align: justify;">Tham số <code>step</code> cho ph&eacute;p ch&uacute;ng ta nhảy c&aacute;ch qua một loạt c&aacute;c phần tử thay v&igrave; đi từ đầu đến cuối trong khoảng <code>start_index:end_index</code>. Chỉ số n&agrave;y c&oacute; thể được bỏ qua khi sử dụng. Khi đ&oacute;, Python sẽ mặc định bước nhảy l&agrave; 1.</li> </ul> <p style="text-align: justify;">V&iacute; dụ 7:</p> <pre class="language-python"><code>vi_du2 = [50, 100, 200, 300, 400] print(vi_du2[0:2]) print(vi_du2[1:3])</code></pre> <p style="text-align: justify;">Kết quả:</p> <pre class="language-markup"><code>[50, 100] [100, 200]</code></pre> <p style="text-align: justify;">Trong v&iacute; dụ tr&ecirc;n, ta đ&atilde; tiến h&agrave;nh lấy c&aacute;c phần tử trong khoảng từ 0 đến 2 (tức l&agrave; 2 phần tử 0 v&agrave; 1). Ch&uacute;ng ta kh&ocirc;ng t&iacute;nh phần tử c&oacute; chỉ số cuối c&ugrave;ng trong ph&eacute;p cắt. Như ở tr&ecirc;n, ch&uacute;ng ta bỏ qua phần tử c&oacute; chỉ số l&agrave; 2 v&agrave; 3.</p> <p style="text-align: justify;">C&aacute;c quy tắc về lấy tập con của danh s&aacute;ch cũng tương tự như lấy chuỗi con trong chuỗi k&yacute; tự. Tức l&agrave; ch&uacute;ng ta c&oacute; thể sử dụng chỉ số &acirc;m v&agrave; bước nhảy. Ngo&agrave;i ra ch&uacute;ng ta cũng c&oacute; thể b&oacute; trống một số tham số. Trong v&iacute; dụ dưới đ&acirc;y, ch&uacute;ng ta sẽ thực hiện một số thao t&aacute;c sau:</p> <ul> <li style="text-align: justify;">Bỏ trống chỉ số bắt đầu (khi đ&oacute; chỉ số n&agrave;y sẽ được mặc định l&agrave; 0 tức l&agrave; lấy hết phần b&ecirc;n tr&aacute;i)</li> <li style="text-align: justify;">Bỏ trống chỉ số kết th&uacute;c (khi đ&oacute; chỉ số n&agrave;y sẽ được hiểu mặc định l&agrave; chỉ số cực trị c&oacute; thể đạt đến của chuỗi c&oacute; thể theo b&ecirc;n tr&aacute;i hoặc b&ecirc;n phải t&ugrave;y theo gi&aacute; trị của bước nhảy)</li> <li style="text-align: justify;">Sử dụng chỉ số &acirc;m</li> <li style="text-align: justify;">Sử dụng bước nhảy</li> <li style="text-align: justify;">Bỏ trống cả chỉ số bắt đầu v&agrave; kết th&uacute;c (mặc định sẽ lấy cực trị của phần tử bắt đầu v&agrave; kết th&uacute;c)</li> </ul> <p style="text-align: justify;">V&iacute; dụ 8:</p> <pre class="language-python"><code>my_list = [50, 100, "Python", 5.6, "Java"] #Lấy 4 phần tử đầu ti&ecirc;n (bỏ trống chỉ số bắt đầu) print(my_list[:4]) # Bỏ trống chỉ số kết th&uacute;c print(my_list[3:]) #Sử dụng chỉ số &acirc;m print(my_list[1:-2]) #Sử dụng bước nhảy print(my_list[0:4:2]) # Bỏ trống cả bắt đầu v&agrave; kết th&uacute;c, nhảy c&aacute;ch 2 print(my_list[::2])</code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>[50, 100, 'Python', 5.6] [5.6, 'Java'] [100, 'Python'] [50, 'Python'] [50, 'Python', 'Java']</code></pre> <div class="ant-row" style="row-gap: 0px;"> <div class="ant-col ant-col-24"> <h2 class="ant-typography lessonCourse_title__1Qw43" style="text-align: justify;">Duyệt phần tử trong danh s&aacute;ch List</h2> </div> </div> <div class="ant-row" style="row-gap: 0px;"> <div class="ant-col ant-col-24"> <div class="content--html line-numbers"> <div> <p style="text-align: justify;"><span style="font-weight: 400;">Việc duyệt qua c&aacute;c phần tử trong một danh s&aacute;ch l&agrave; một thao t&aacute;c cơ bản v&agrave; cần thiết nhất khi l&agrave;m việc với danh s&aacute;ch. </span><span style="font-weight: 400;">C&oacute; nhiều c&aacute;ch kh&aacute;c nhau để duyệt qua c&aacute;c phần tử trong danh s&aacute;ch. <br /></span></p> <h3 style="text-align: justify;">Sử dụng v&ograve;ng lặp for</h3> <p style="text-align: justify;"><span style="font-weight: 400;">Bằng c&aacute;ch sử dụng v&ograve;ng lặp for, ch&uacute;ng ta c&oacute; thể duyệt qua từng phần tử trong tập hợp n&oacute;i chung v&agrave; danh s&aacute;ch n&oacute;i ri&ecirc;ng. Đ&acirc;y l&agrave; t&ugrave;y chọn mặc định cho v&ograve;ng lặp for trong Python. V&ograve;ng lặp for trong Python l&agrave;m việc bằng c&aacute;ch duyệt qua lần lượt c&aacute;c phần tử trong một danh s&aacute;ch.<br /></span></p> <p style="text-align: justify;"><span style="font-weight: 400;">V&iacute; dụ 9:</span></p> <pre class="language-python" tabindex="0"><code>vi_du2 = [100, 200, 300, 400, 500, 600] for i in vi_du2: print(i)</code></pre> </div> </div> </div> </div> <p style="text-align: justify;"><span style="font-weight: 400;">Kết quả:</span></p> <p style="text-align: justify;"><span style="font-weight: 400;"> </span></p> <pre class="language-markup" tabindex="0"><code>100 200 300 400 500 600</code></pre> <h3 style="text-align: justify;">Duyệt phần tử bằng chỉ số</h3> <p style="text-align: justify;"><span style="font-weight: 400;">Ch&uacute;ng ta cũng c&oacute; thể duyệt qua c&aacute;c phần tử trong đối tượng kiểu List danh s&aacute;ch bằng c&aacute;ch tham chiếu tới chỉ số. Ch&uacute;ng ta sẽ sử dụng c&aacute;c h&agrave;m range() v&agrave; len() để thực hiện việc n&agrave;y.</span></p> <p style="text-align: justify;"><span style="font-weight: 400;">V&iacute; dụ 10:</span></p> <pre class="line-numbers language-python" tabindex="0"><code>thislist = ["apple", "banana", "cherry"] for i in range(len(thislist)): print(thislist[i])</code></pre> <p style="text-align: justify;"><span style="font-weight: 400;">Kết quả:</span></p> <pre class="line-numbers language-markup" tabindex="0"><code>apple banana cherry</code></pre> <p style="text-align: justify;">R&otilde; r&agrave;ng, ch&uacute;ng ta thấy c&aacute;ch n&agrave;y phức tạp hơn c&aacute;ch trước đ&uacute;ng kh&ocirc;ng ạ. Bởi đ&acirc;y kh&ocirc;ng phải l&agrave; c&aacute;ch được khuyến nghị mặc định của Python. Ch&uacute;ng ta c&oacute; thể d&ugrave;ng c&aacute;ch n&agrave;y trong một số trường hợp khi m&agrave; ch&uacute;ng ta muốn lưu lại chỉ số vị tr&iacute; của phần tử cho c&aacute;c c&ocirc;ng việc ph&iacute;a sau. C&ograve;n nếu kh&ocirc;ng, ch&uacute;ng ta n&ecirc;n duyệt bằng một v&ograve;ng for đơn giản.</p> <p style="text-align: justify;"><span style="font-weight: 400;">Ch&uacute;ng ta cũng c&oacute; thể duyệt qua c&aacute;c phần tử c&oacute; trong đối tượng kiểu List bằng c&aacute;ch sử dụng v&ograve;ng lặp while thay cho for ở tr&ecirc;n. </span><span style="font-weight: 400;">Ch&uacute;ng ta sẽ sử dụng h&agrave;m len() để x&aacute;c định độ d&agrave;i của tập hợp List, sau đ&oacute; bắt đầu từ chỉ số 0 v&agrave; lặp lại theo c&aacute;ch bằng c&aacute;ch tham chiếu đến chỉ số của c&aacute;c phần tử. </span><span style="font-weight: 400;">Lưu &yacute; rằng cần tăng chỉ số l&ecirc;n 1 sau mỗi lần lặp. Bởi while kh&ocirc;ng tự điều chỉnh chỉ số để duyệt như for.<br /></span></p> <p style="text-align: justify;"><span style="font-weight: 400;">V&iacute; dụ 11:</span></p> <pre class="line-numbers language-python" tabindex="0"><code>thislist = ["apple", "banana", "cherry"] i = 0 while i &lt; len(thislist): print(thislist[i]) i = i + 1</code></pre> <p style="text-align: justify;"><span style="font-weight: 400;">Kết quả:</span></p> <pre class="line-numbers language-markup" tabindex="0"><code>apple banana cherry</code></pre> <h2 style="text-align: justify;">Kết luận</h2> <p style="text-align: justify;">Như vậy, trong b&agrave;i n&agrave;y ch&uacute;ng ta đ&atilde; biết c&aacute;ch để l&agrave;m việc với một danh s&aacute;ch trong Python cụ thể:</p> <ul> <li style="text-align: justify;">Biết c&aacute;ch định nghĩa, khai b&aacute;o v&agrave; khởi tạo một danh s&aacute;ch trong Python</li> <li style="text-align: justify;">Biết c&aacute;ch truy cập v&agrave;o một phần tử trong Python th&ocirc;ng qua chỉ số &acirc;m v&agrave; dương</li> <li style="text-align: justify;">Biết c&aacute;ch lấy ra một danh s&aacute;ch con th&ocirc;ng qua ph&eacute;p cắt danh s&aacute;ch</li> <li style="text-align: justify;">Duyệt qua c&aacute;c phần tử trong danh s&aacute;ch</li> </ul> <p style="text-align: justify;">Danh s&aacute;ch l&agrave; một cấu tr&uacute;c dữ liệu phức tạp do đ&oacute;, c&ograve;n rất nhiều c&aacute;c thao t&aacute;c tr&ecirc;n danh s&aacute;ch m&agrave; ch&uacute;ng ta c&oacute; thể thực hiện được. Trong c&aacute;c b&agrave;i tiếp theo ch&uacute;ng ta sẽ l&agrave;m việc với một số thao t&aacute;c cụ thể thường gặp với Python List như sao ch&eacute;p danh s&aacute;ch, x&oacute;a hoặc th&ecirc;m phần tử v&agrave;o danh s&aacute;ch. Nhưng trước khi đi tiếp với c&aacute;c thao t&aacute;c n&agrave;y, ch&uacute;ng ta h&atilde;y c&ugrave;ng luyện tập với một số b&agrave;i tập đơn giản trước nh&eacute;!</p>