1 | 12 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Bài 12: KIỂU DỮ LIỆU LIST TRONG PYTHON (Phần 1) Xem học website để ủng hộ Kteam: KIỂU DỮ LIỆU LIST TRONG PYTHON (Phần 1) Mọi vấn đề lỗi website làm ảnh hưởng đến bạn thắc mắc, mong muốn khóa học mới, nhằm hỗ trợ cải thiện Website Các bạn vui lòng phản hồi đến Fanpage How Kteam nhé! Dẫn nhập Trong trước, Kteam giới thiệu đến bạn loạt KIỂU DỮ LIỆU CHUỖI Python gồm nhiều kiến thức chi tiết dễ hiểu Sang này, tìm hiểu kiểu liệu quan trọng Python Đó KIỂU DỮ LIỆU LIST Nội dung Để đọc hiểu tốt bạn cần: Cài đặt sẵn MÔI TRƯỜNG PHÁT TRIỂN CỦA PYTHON Xem qua CÁCH CHẠY CHƯƠNG TRÌNH PYTHON Nắm CÁCH GHI CHÚ BIẾN TRONG PYTHON KIỂU DỮ LIỆU SỐ KIỂU DỮ LIỆU CHUỖI Python Bạn Kteam tìm hiểu nội dun g sau Copyright © Howkteam.com | 12 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Container Đặt vấn đề cách giải Giới thiệu List Python Cách khởi tạo List Một số toán tử với List Python Indexing cắt List Python Thay đổi nội dung List Python Ma trận Vấn đề cần lưu tâm sử dụng List Củng cố học Container Đặt vấn đề cách giải Các bạn biết đến BIẾN (đã giới thiệu BIẾN TRONG PYTHON), container cho phép ta lưu trữ liệu lấy cần, thay đổi ta cần cập nhật giá trị sửa chữa Nhưng, khả biến bị giới hạn! Đơn giản với ví dụ, ta cần biến teo lưu cho ta giá trị chuỗi `”Teo”` tên Tèo, tuổi Tèo số 17 >>> teo = "Teo" >>> teo 'Teo' >>> teo = 17 >>> teo 17 Biến teo lưu hai giá trị lúc Không tên tuổi, Tèo cịn nhiều thơng tin muốn lưu vào biến teo ngày sinh gấu, số lần fix bug tháng, khóa học coi gần nhất, số lần tè dầm tuổi 17,… Với lực người học lập trình, sáng kiến tối ưu họ đưa giá trị ta có biến riêng biệt Và coi giải pháp hay! Copyright © Howkteam.com | 12 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Tuy nhiên tầm vi mơ Tèo tham, muốn lưu thứ linh tinh cô gấu dễ thương Lúc đó, việc bạn kêu Tèo tạo số lượng biến để lưu trữ điều gian nan Đó ta cần thứ biến, nội công lại thâm hậu biến, có khả lưu trữ nhiều giá trị lúc Vì thế, Python có nhiều container cho phép ta lưu trữ nhiều giá trị, đối tượng lúc, hỗ trợ cho việc truy xuất, tính tốn, thay đổi (một số container Python không hỗ trợ việc thay đổi),… Trong ngơn ngữ lập trình khác, container chứa nhiều giá trị lúc thường gọi ARRAY (mảng) Giới thiệu List Python LIST container sử dụng nhiều chương trình Python Một List gồm yếu tố sau: Được giới hạn cặp ngoặc [ ], tất nằm phần tử List Các phần tử List phân cách dấu phẩy (,) List có khả chứa giá trị, đối tượng Python Và bao gồm chứa nó! (một trường hợp hay ho Kteam giới thiệu phần khác) Ví dụ: >>> [1, 2, 3, 4, 5] # Một List chứa số nguyên [1, 2, 3, 4, 5] >>> ['a', 'b', 'c', 'd'] # Một List chứa chuỗi ['a', 'b', 'c', 'd'] >>> [[1, 2], [3, 4]] # Một List chứa List [1, 2] [3, 4] [[1, 2], [3, 4]] >>> [1, 'one', [2, 'two']] # List chứa số nguyên, chuỗi, List [1, 'one', [2, 'two']] Copyright © Howkteam.com | 12 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM Cách khởi tạo List Sử dụng cặp dấu ngoặc [] đặt giá trị bên Cú pháp: [, , , , ] Ví dụ: >>> lst = [1,2,5,"kteam"] >>> lst [1, 2, 5, 'kteam'] >>> empty_list = [] # khởi tạo list rỗng >>> empty_list [] Sử dụng List Comprehension Cú pháp [Comprehension] Ví dụ: >>> a = [kteam for kteam in range(3)] >>> a [0, 1, 2] >>> another_lst = [[n, n * 1, n * 2] for n in range(1, 4)] >>> another_lst [[1, 1, 2], [2, 2, 4], [3, 3, 6]] Copyright © Howkteam.com KHÓA PYTHON CƠ BẢN HOWKTEAM.COM | 12 List comprehension cách khởi tạo List thú vị Python Do đó, khó để nói hết trường hợp Vì vậy, tạm gác lại kiến thức này, bạn không cần phải cố gắng hiểu chưa gặp gỡ vòng lặp Sử dụng constructor List Cú pháp: list (iterable) Lưu ý: iterable đối tượng nói chung container Khái niệm Kteam giới thiệu sau Đối với bạn theo dõi khóa học Kteam, bạn biết hai iterable chuỗi, List Ví dụ: >>> lst = list([1, 2, 3]) >>> lst [1, 2, 3] >>> str_lst = list('HOWKTEAM') >>> str_lst ['H', 'O', 'W', 'K', 'T', 'E', 'A', 'M'] >>> list(1) Traceback (most recent call last): File "", line 1, in TypeError: 'int' object is not iterable Một số toán tử với List Python Các toán tử List gần giống tương tự với chuỗi (bạn tham khảo tốn tử chuỗi KIỂU DỮ LIỆU CHUỖI – phần 2) Copyright © Howkteam.com | 12 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM Toán tử + >>> lst = [1, 2] >>> lst += ['one', 'two'] >>> lst [1, 2, 'one', 'two'] >>> lst += 'abc' # cộng List chuỗi >>> lst [1, 2, 'one', 'two', 'a', 'b', 'c'] >>> 'abc' + [1, 2] # List cộng chuỗi cho phép, chuỗi cộng List khơng Traceback (most recent call last): File "", line 1, in TypeError: must be str, not list Toán tử * >>> lst = list('KTER') * >>> lst ['K', 'T', 'E', 'R', 'K', 'T', 'E', 'R'] >>> [1, 2] * [1, 2, 1, 2, 1, 2] Toán tử in >>> 'a' in [1, 2, 3] False >>> 'a' in ['a', 2, 3] True >>> 'a' in [['a'], 'b', 'c'] # có ['a'] thơi, khơng có 'a' False Indexing cắt List Python Như đề cập, List với chuỗi giống nhiều điểm, phần Indexing cắt List hoàn toàn giống với Indexing cắt chuỗi (Nếu chưa biết chuỗi bạn tham khảo qua KIỂU DỮ LIỆU CHUỖI TRONG PYTHON – Phần 1) >>> lst = [1, 2, 'a', 'b', [3, 4]] Copyright © Howkteam.com KHÓA PYTHON CƠ BẢN HOWKTEAM.COM | 12 >>> lst[0] >>> lst[-1] [3, 4] >>> lst[3] 'b' >>> lst[1:3] [2, 'a'] >>> lst[:2] [1, 2] >>> lst[2:] ['a', 'b', [3, 4]] >>> lst[::-1] [[3, 4], 'b', 'a', 2, 1] Thay đổi nội dung List Python Như bạn biết, ta thay đổi nội dung chuỗi ví dụ bên >>> s = 'math' >>> s[1] 'a' >>> s[1] = 'i' Traceback (most recent call last): File "", line 1, in TypeError: 'str' object does not support item assignment Còn phần List, ta thay đổi nội dung >>> lst = [1, 'two', 3] >>> lst[1] 'two' >>> lst[1] = >>> lst [1, 2, 3] Copyright © Howkteam.com KHÓA PYTHON CƠ BẢN HOWKTEAM.COM | 12 Ma trận Nghe ma trận hồn tráng thơi, bạn thấy Ví dụ List chứa List khác >>> lst = [[1, 2, 3], [4, 5, 6]] >>> lst [[1, 2, 3], [4, 5, 6]] Ta dễ dàng truy cập hai phần tử List vừa khởi tạo >>> lst[0] [1, 2, 3] >>> lst[-1] [4, 5, 6] Hai giá trị List Và lẽ dĩ nhiên, bạn có quyền truy cập đến phần tử phần tử nằm List bạn vừa khởi tạo Thậm chí cắt List! >>> lst[0][0] >>> lst[0][-1] >>> lst[1][1] >>> lst[0][:2] [1, 2] >>> lst[1][:] [4, 5, 6] Vấn đề cần lưu tâm sử dụng List Những lưu ý bạn khơng biết, chương trình bạn có output khác với bạn mong muốn Khơng phép gán List qua List khơng có chủ đích Copyright © Howkteam.com KHĨA PYTHON CƠ BẢN HOWKTEAM.COM | 12 Hãy xem xét đoạn code sau >>> lst = [1, 2, 3] >>> another_lst = lst >>> lst [1, 2, 3] >>> lst = [1, 2, 3] >>> lst [1, 2, 3] >>> another_lst = lst >>> another_lst [1, 2, 3] >>> lst [1, 2, 3] Mọi thứ ổn, khơng có xảy ra, bạn thay đổi giá trị hai List >>> another_lst[1] >>> another_lst[1] = 'Two' >>> another_lst [1, 'Two', 3] >>> lst [1, 'Two', 3] Chỉnh một, đổi tới hai Lí bạn gán giá trị List trực tiếp thế, bạn đưa hai List trỏ vào nơi Hãy tưởng tượng Tèo có 50 nghìn Sau bạn sử dụng phép thuật gán số tiền cô gấu Tèo số tiền Tèo Khi đó, gấu dễ thương Tèo khơng tự nhiên mà có 50 nghìn, mà thay vào đó, bạn gián tiếp cho phép gấu Tèo sử dụng số tiền Tèo nhịn ăn mì tơm lâu Và vào ngày trơi mưa không rơi, cô chạy mua gói Snack nghìn sử dụng số tiền 50 nghìn bạn vừa gán cho cô Hậu Tèo thấy đâu nghìn Do đó, trước gán, bạn phải copy giá trị List >>> lst = [1, 2, 3] >>> lst Copyright © Howkteam.com KHĨA PYTHON CƠ BẢN HOWKTEAM.COM 10 | 12 [1, 2, 3] >>> another_list = list(lst) # cách >>> another_list [1, 2, 3] >>> last_list = lst[:] # cách >>> last_list [1, 2, 3] >>> another_list[1] = 'Two' >>> last_list[1] = 'Chu' >>> lst [1, 2, 3] >>> another_list [1, 'Two', 3] >>> last_list [1, 'Chu', 3] Thêm trường hợp bạn cần phải lưu ý, lúc bạn cần copy giá trị ma trận >>> lst = [[1, 2, 3], [4, 5, 6]] >>> lst [[1, 2, 3], [4, 5, 6]] >>> another_lst = lst[:] >>> another_lst[0] = 'ok' >>> lst [[1, 2, 3], [4, 5, 6]] >>> another_lst ['ok', [4, 5, 6]] Đúng mong đợi Thế nhưng… >>> another_lst[1] [4, 5, 6] >>> another_lst[1][0] = 'changed' >>> another_lst ['ok', ['changed', 5, 6]] >>> lst [[1, 2, 3], ['changed', 5, 6]] Lưu ý: chép phần tử List Không chép phần tử phần tử nằm List Do đó, bạn thay đổi phần tử List khơng sao, nhiên thay đổi phần tử phần tử List, vấn đề lại xuất Copyright © Howkteam.com 11 | 12 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Đương nhiên, bạn giải được, rườm rà khơng có vịng lặp Do đó, tạm dừng việc nhận biết Còn phần giải đợi mai Khi võ công Xà Ngữ nâng cao tiếp cận với tuyệt kĩ vòng lặp Củng cố học Đáp án trước Bạn tìm thấy câu hỏi phần CÂU HỎI CỦNG CỐ KIỂU DỮ LIỆU CHUỖI TRONG PYTHON – Phần Cách đơn giản >>> s = s.lower() >>> s = s.strip('a') >>> s = s.lstrip('ao') >>> s = s.title() >>> s 'Neu Mot Ngay Nao Do' Cách ngắn >>> s = s.lower().strip('a').lstrip('ao').title() >>> s 'Neu Mot Ngay Nao Do' Câu hỏi củng cố Tìm cách khởi tạo List hợp lệ a list(list(list('abc')) b [1, 2, 3] + list(4) c list() d [0] * List có phải hashable object (immutable object)? Với chuỗi s Copyright © Howkteam.com 12 | 12 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM s = 'aaaaaaaAAAAAaaa//123123//000000//&&TTT%%abcxyznontqfadf' Hãy lấy mật mã chuỗi s, biết mật mã nằm && %% Cố gắng tối thiểu dòng code Đáp án phần trình bày Tuy nhiên, Kteam khuyến khích bạn tự trả lời câu hỏi để củng cố kiến thức thực hành cách tốt nhất! Kết luận Bài viết sơ lược cho bạn KIỂU DỮ LIỆU LIST TRONG PYTHON Ở sau, Kteam tiếp tục nói KIỂU DỮ LIỆU LIST TRONG PYTHON - Phần Cụ thể số phương thức List Python Cảm ơn bạn theo dõi viết Hãy để lại bình luận góp ý để phát triển viết tốt Đừng quên “Luyện tập – Thử thách – Khơng ngại khó” Copyright © Howkteam.com ... chép phần tử List Không chép phần tử phần tử nằm List Do đó, bạn thay đổi phần tử List khơng sao, nhiên thay đổi phần tử phần tử List, vấn đề lại xuất Copyright © Howkteam.com 11 | 12 KHÓA PYTHON. .. thiệu List Python LIST container sử dụng nhiều chương trình Python Một List gồm yếu tố sau: Được giới hạn cặp ngoặc [ ], tất nằm phần tử List Các phần tử List phân cách dấu phẩy (,) List. .. cắt List Python Như đề cập, List với chuỗi giống nhiều điểm, phần Indexing cắt List hoàn toàn giống với Indexing cắt chuỗi (Nếu chưa biết chuỗi bạn tham khảo qua KIỂU DỮ LIỆU CHUỖI TRONG PYTHON