--------------- <> -----------------
--- KHOA HỌC - CÔNG NGHỆ - GIÁO DỤC - VIỆC LÀM ---
--- Học để đi cùng bà con trên thế giới ---

Tìm kiếm trong Blog

AI thực hành (7) - Công nghệ Blockchain

Bài trước: AI thực hành (6) - Sử dụng AI có trách nhiệm
-----

7. Công nghệ Blockchain 

7.1 Sổ cái chung

Hình "Sổ cái" (nguồn Internet):



Tại sao chúng ta lại cần một “Sổ cái” chung?

Hiểu đơn giản, “Sổ cái” chính là cuốn sổ ghi chép thu/chi quỹ lớp.

Câu chuyện liên quan đến quỹ lớp:

- Lớp của bạn có một quỹ chung, do các thành viên đóng góp, để chi tiêu các công việc của lớp. Bạn thủ quỹ sẽ giữ cuốn sổ này (sổ viết tay hoặc tập tin Excel), để ghi chép: ai đã đóng tiền? Các khoản chi hết bao nhiêu?

Một số tình huống có thể xảy ra:

- Sửa đổi nội dung: Nếu bạn thủ quỹ sửa số tiền chi từ 100.000 thành 200.000 để "bỏ túi riêng", sẽ không ai biết, trừ khi kiểm tra hóa đơn cực kỳ gắt gao

- Mất mát: Nếu cuốn sổ đó bị mất hoặc tập tin Excel bị hư, cả lớp coi như mất toàn bộ dữ liệu ghi chép thu/chi

- Sự độc quyền: Bạn thủ quỹ là người duy nhất nắm thông tin về thu/chi quỹ lớp. Bạn nói sao thì cả lớp phải tin vậy

Đây chính là mô hình Sổ cái tập trung (giống như Ngân hàng). Chúng ta phải đặt niềm tin tuyệt đối vào một bên thứ ba.

Bên thứ ba là gì?

Hãy tưởng tượng bạn đi ăn lẩu cùng nhóm bạn và thanh toán bằng hình thức chuyển khoản ngân hàng (App ngân hàng).

Khi bạn bấm "Gửi 500.000", không có tờ tiền nào bay từ điện thoại bạn sang điện thoại chủ quán. Bạn đang yêu cầu Ngân hàng: "Hãy trừ 500.000 trong tài khoản của tôi và cộng 500.000 vào tài khoản của ông chủ quán".

Ở đây, Ngân hàng chính là Bên thứ ba. Bạn và chủ quán đều tin rằng Ngân hàng đang làm đúng. Nếu một ngày Ngân hàng bảo: "Hệ thống đã bị lỗi, chúng tôi không thấy giao dịch đó", hoặc "Tài khoản của bạn chỉ còn 0 đồng", bạn gần như không có cách nào tự chứng minh ngược lại nếu họ không xác nhận.

“Sổ cái” chung

Với cuốn sổ ghi chép thu/chi quỹ lớp, để tránh các tình huống “xấu” xảy ra, như nội dung cuốn sổ bị sửa, mất sổ, độc quyền thông tin, thay vì giao cuốn sổ cho một người ghi chép, chúng ta sẽ làm như sau:

- Mỗi bạn trong lớp (50 người) đều giữ một cuốn sổ y hệt nhau

- Mỗi khi có ai đóng tiền hoặc chi tiền, lớp trưởng sẽ đứng lên thông báo công khai giữa lớp

- Tất cả 50 bạn cùng lấy cuốn sổ ra, ghi dòng đó vào

- Sau khi ghi xong, các bạn nhìn sang nhau, kiểm tra xem số tiền có khớp không. Nếu 49 bạn ghi là 100.000, mà có 1 bạn ghi 200.000, thì cuốn sổ của bạn đó bị coi là sai và bị loại bỏ

Ưu điểm là:

- Không thể gian lận: Muốn sửa số tiền, bạn phải đi lấy trộm và sửa cùng lúc hơn 25 (quá bán) cuốn sổ của các bạn khác trong lớp. Điều này gần như bất khả thi

- Minh bạch tuyệt đối: Ai cũng biết tiền đi đâu, về đâu mà không cần hỏi ai

- An toàn: Nếu 5 bạn nghỉ học hay mất sổ, 45 cuốn sổ còn lại vẫn lưu giữ dữ liệu chính xác

7.2 Blockchain là gì

Từ “Sổ cái chung” đến công nghệ Blockchain

Trong ví dụ về cuốn sổ quỹ lớp, chúng ta đã thấy rằng thay vì tin tưởng vào một người duy nhất (thủ quỹ) hay một bên thứ ba (ngân hàng), cả lớp chọn cách mỗi người giữ một cuốn sổ y hệt nhau và cùng xác nhận giao dịch công khai. Đây chính là mô hình sơ khai của Blockchain.

Để liên hệ cụ thể hơn, bạn có thể hình dung 4 thành phần tương ứng như sau:

[1] Mạng lưới phi tập trung (decentralized network): 

- Trong ví dụ về “Sổ cái chung”: Là 50 bạn học sinh trong lớp, mỗi người giữ một cuốn sổ

- Trong Blockchain: Là mạng lưới hàng nghìn máy tính (gọi là các nút - nodes) trên toàn thế giới. Không có một "máy chủ" hay "ông chủ" nào nắm độc quyền; mọi máy tính đều có quyền hạn ngang nhau trong việc lưu trữ dữ liệu

[2] Cơ chế đồng thuận (consensus mechanism):

- Trong ví dụ về “Sổ cái chung”: Khi có giao dịch, 50 bạn cùng ghi vào sổ và nhìn sang nhau để kiểm tra. Nếu 49 bạn ghi đúng mà 1 bạn ghi sai, bản ghi sai sẽ bị loại bỏ

- Trong Blockchain: Khi một giao dịch mới xảy ra (ví dụ: chuyển Bitcoin), các máy tính trong mạng lưới sẽ sử dụng thuật toán toán học phức tạp để kiểm tra tính hợp lệ. Chỉ khi đa số các máy tính đồng ý rằng giao dịch đó là đúng, nó mới được ghi vào "sổ cái" chung của toàn mạng lưới

[3] Tính không thể sửa đổi (immutability):

- Trong ví dụ về “Sổ cái chung”: Việc 50 người cùng giữ sổ giúp tránh tình trạng nội dung bị sửa hay mất sổ. Muốn gian lận, bạn phải “bí mật” vào sửa cùng lúc sổ của ít nhất 26 bạn khác (quá bán), điều này gần như bất khả thi

- Trong Blockchain: Dữ liệu được đóng gói thành các "khối" (block) và xâu chuỗi với nhau bằng mật mã học (chain). Một khi một khối đã được thêm vào chuỗi, việc thay đổi thông tin trong đó đòi hỏi phải thay đổi toàn bộ các khối sau nó trên tất cả máy tính trong mạng lưới, một việc làm tốn kém và khó khăn đến mức không thể thực hiện được

[4] Tính minh bạch (transparency):

- Trong ví dụ “Sổ cái chung”: Lớp trưởng thông báo công khai giữa lớp để mọi người cùng ghi chép lại việc thu/chi

- Trong Blockchain: Bất kỳ ai cũng có thể theo dõi lịch sử giao dịch trên mạng lưới (ví dụ: xem một ví Bitcoin đã chuyển tiền đi đâu), dù danh tính thật của người thực hiện có thể được ẩn danh qua các mã số

Tóm lại: Blockchain chính là phiên bản kỹ thuật số, quy mô toàn cầu và bảo mật tuyệt đối của mô hình "Sổ cái chung". Nó giải quyết bài toán về niềm tin giữa những người không quen biết nhau mà không cần đến bất kỳ "Bên thứ ba" nào như ngân hàng hay tổ chức trung gian.

Xem hình minh họa (nguồn Internet):


7.3 Một số ví dụ ứng dụng Blockchain

Từ những đặc điểm cốt lõi như tính minh bạch, không thể sửa đổi và phi tập trung đã nêu ở phần trước, công nghệ Blockchain hiện đang được ứng dụng rộng rãi để giải quyết bài toán về niềm tin trong nhiều lĩnh vực:

[1] Tiền điện tử và Tài chính (cryptocurrency & finance) Đây là ứng dụng đầu tiên và nổi tiếng nhất của Blockchain

- Ví dụ: Bitcoin hay Ethereum

- Cách hoạt động: Blockchain đóng vai trò như một cuốn "sổ cái chung" kỹ thuật số, ghi lại mọi giao dịch chuyển tiền giữa các tài khoản mà không cần một ngân hàng trung gian. Điều này giúp giảm chi phí giao dịch và cho phép chuyển tiền xuyên biên giới gần như tức thì

Logo Bitcoin (nguồn Internet):

[2] Truy xuất nguồn gốc Chuỗi cung ứng (supply chain management)

Xem hình minh họa (nguồn Internet):

Blockchain giúp người tiêu dùng và doanh nghiệp theo dõi chính xác hành trình của sản phẩm.

- Ví dụ: Truy xuất nguồn gốc thực phẩm sạch hoặc hàng hiệu

- Cách hoạt động: Mỗi bước trong quá trình từ trang trại đến bàn ăn (thu hoạch, đóng gói, vận chuyển, kiểm định) đều được ghi lại thành một "khối" dữ liệu không thể xóa sửa trên Blockchain. Người dùng chỉ cần quét mã QR trên sản phẩm là có thể biết chính xác nguồn gốc, đảm bảo tính minh bạch tuyệt đối.

[3] Hợp đồng thông minh (smart contracts)

Xem hình minh họa (nguồn Internet):

Đây là các chương trình máy tính tự động thực thi các điều khoản của hợp đồng khi các điều kiện được thỏa mãn.

- Ví dụ: Tự động chi trả bảo hiểm chuyến bay khi máy bay bị trễ giờ

- Cách hoạt động: Các điều khoản được lập trình trực tiếp lên Blockchain. Vì dữ liệu trên Blockchain là minh bạch và không thể gian lận, hệ thống sẽ tự động xác nhận thông tin chuyến bay và chuyển tiền bồi thường cho khách hàng ngay lập tức mà không cần thủ tục giấy tờ phức tạp hay sự can thiệp của con người.

Tóm lại: Blockchain không chỉ dừng lại ở tiền ảo, mà nó đang trở thành nền tảng để xây dựng sự tin tưởng trong mọi giao dịch số của đời sống hiện đại.



-----
Bài sau:

Học đại học thời AI

Chép về từ fb của tác giả Trương Nguyện Thành:
---

TỔNG HỢP BÌNH LUẬN VỀ LỢI THẾ KHÁC BIỆT KHI TÌM VIỆC LÀM TRONG THỜI ĐẠI AI

Cảm ơn tất cả các bạn đã góp ý cho câu hỏi "Khi kiến thức không còn là lợi thế cạnh tranh, vậy khi cầm tấm bằng ĐH xin việc làm thì lợi thế khác biệt của bạn là gì?".   Tôi phân loại tất cả góp ý này thành những góc nhìn khác nhau và trình bày góc nhìn chiếm tỷ cao trước và cuối mỗi góc nhìn thì tôi trình bày suy nghĩ cá nhân của  mình.   

🧠 1. Góc nhìn: Kiến thức vẫn là lợi thế cốt lõi

Luồng này chiếm tỷ lệ khá lớn.  Góc nhìn này phản biện trực tiếp giả định ban đầu và làm rõ rằng không còn lợi thế cạnh tranh không có nghĩa là không quan trọng. 

Ý chính:

- Kiến thức không mất giá, chỉ không còn là lợi thế duy nhất

- AI không thay thế kiến thức thật, chỉ hỗ trợ truy xuất

- Không có nền tảng → dễ bị AI “dắt mũi”

Các biến thể:

“Kiến thức vẫn là số 1” (Phạm Vân, Nguyễn Trung Thanh)

“AI chỉ tổng hợp, không tạo tri thức mới hoàn toàn”

“Không có kiến thức → không dùng được AI đúng cách”

“Tri thức ≠ thông tin Google/TikTok”

“Kiến thức là điều kiện cần để sinh tồn”

Góc nhìn cá nhân:  Kiến thức là nền tảng lý luận để có thể phản biện trong thời đại AI.  Tuy nhiên kiến thức cần được hiểu sâu, biết vận dụng để giải quyết vấn đề thực tế và phản biện thông tin từ AI chứ không chỉ 'biết thuộc lòng thông tin'. 

🎓 2. Góc nhìn: Bằng đại học = điều kiện cần (vé vào cửa)

Ý chính:

Bằng ĐH vẫn có giá trị trong tuyển dụng (đặc biệt ở VN) vì nó là filter ban đầu.  Tuy nó không đảm bảo năng lực nhưng giúp tăng xác suất được chọn.

Các biến thể:

- “Vé gửi xe” (Tâm Long)

- “Điều kiện cần, không phải đủ” (Lê Chiến, Tony Buổi Tối)

- Công ty vẫn yêu cầu bằng trong JD (Long Hồng Long)

- Trường top → lợi thế tuyển dụng (Đình Hành)

- Không bằng → khó qua vòng loại

Góc nhìn cá nhân:  Tôi đồng ý là bằng ĐH là 'vé vào cổng nhận hồ sơ xét tuyển' và nó vẫn là yếu tố sàng lọc dựa vào xác  suất và nó cũng biểu hiện tính kỷ luật và kiên trì theo đuổi mục tiêu  của ứng viên.  

🔄 3. Góc nhìn: Kiến thức ≠ Bằng cấp

Ý chính:

- Học ĐH ≠ có kiến thức thật

- Có thể phải “learn lại từ đầu khi đi làm”

Ví dụ:

“Học 5 năm nhưng vào công ty học lại 100%” (Nguyễn Cao Trung)

“Bằng không phản ánh năng lực thực”

Góc nhìn cá nhân:  Tôi đồng ý là ở Việt Nam thì tấm bằng khác với kiến thức thật.  Thị trường lao động đánh giá ở đầu ra, 'bạn làm được gì chứ không phải biết biết gì.  

⚡ 4. Góc nhìn: Lợi thế cạnh tranh = khả năng tạo ra kết quả

Core idea:

Doanh nghiệp không trả tiền cho kiến thức hay bằng cấp mà trả tiền cho  kết quả.

Các yếu tố cụ thể:

- Làm được việc (output)

- Tạo sản phẩm có giá trị

- Giải quyết vấn đề thực tế

Các biến thể:

“Làm ra được gì” (La Phi Miền Tây)

“Close the gap cho employer” (Lam Bobby)

“Giải quyết vấn đề” (Huy Lực Nguyễn)

Góc nhìn cá nhân:  Đây là góc nhìn thực tế.  Với doanh nghiệp thì họ trả tiền cho bạn để giải quyết vấn đề cho họ nhanh nhất, chính xác nhất, hiệu quả nhất, và ít tốn kém nhất với tất cả các công cụ mà bạn có thể dùng, AI hay không AI thì với họ không quan trọng. 

🧩 5. Góc nhìn: Tư duy là lợi thế cạnh tranh thật sự

Các loại tư duy được nhắc:

- Tư duy phản biện

- Tư duy hệ thống

- Tư duy logic

- Tư duy ra quyết định

Ý chính:

AI có thể trả lời → nhưng:  không thay bạn chịu trách nhiệm và không thay bạn đưa ra quyết định

Góc nhìn cá nhân:  Người dùng AI tốt là người có khung tư duy tốt ngoài nền tảng kiến thức cốt lõi. 

🚀 6. Góc nhìn: Khả năng học & thích nghi

Góc nhìn này được nhắc rất nhiều.

Các yếu tố:

- Tự học (meta-learning)

- Học nhanh

- Cập nhật liên tục

- Adapt với môi trường

Góc nhìn cá nhân: Trong thời AI khi 'biết gì' không còn là lợi thế nữa thì biết dùng kiến thức để giải quyết vấn đề và đặc biệt khả năng “học nhanh hơn người khác” mới  chính là lợi thế.

🤝 7. Góc nhìn: Kỹ năng mềm & con người

Bao gồm:

- Giao tiếp

- Làm việc nhóm

- Lãnh đạo

- Thấu cảm

- Dễ mến 😄

Góc nhìn cá nhân:  Đúng là AI không thay thế được cảm xúc, tương tác xã hội và lòng tin. 

🌐 8. Góc nhìn: Mối quan hệ (network)

Job không phải lúc nào cũng public

Network → cơ hội thực

Ví dụ:

“Việc đầu tiên do bạn giới thiệu” (Thuy Nga Pham)

Góc nhìn cá nhân: Bao nhiêu năm sống trong môi trường học thuật, tôi nhận ra sinh viên thành công sau này không chỉ biết đến lớp và học ở đại học mà biết tận dụng môi trường đại học để xây dựng hệ sinh thái quan hệ kể cả tìm ý trung nhân và cơ hội trải nghiệm mới. 

🧠 9. Góc nhìn: Thái độ & kỷ luật

Bao gồm:

- Chịu khó

- Kiên trì

- Chấp nhận thấp lúc đầu

- Không đổ lỗi

- Tin cậy

Góc nhìn cá nhân:  Đây đúng là những điều mà AI không thể copy được.

💪 10. Góc nhìn: Sức khỏe & năng lượng

Sức khỏe = nền tảng làm việc lâu dài

Bền bỉ = lợi thế cạnh tranh

Góc nhìn cá nhân:  Đây là một góc nhìn nhỏ nhưng đáng chú ý  vì trong môi trường thay đổi nhanh và nhiều biến động thì khả năng thích nghi để sinh tồn đòi hỏi hai yếu tố sức  khỏe và sự bền bỉ.  

🎯 11. Góc nhìn: Trải nghiệm & kinh nghiệm

- Va chạm thực tế

- Làm nhiều môi trường

- Trial & error

Góc nhìn cá  nhân:  Dù sống trong thời đại nào, trải nghiệm cá nhân của mỗi người tạo nên lợi thế khác biệt của người ấy.  

🧬 12. Góc nhìn: Thiên thời – địa lợi – nhân hòa

- Đúng ngành – đúng thời điểm

- Đúng môi trường

- Quan hệ phù hợp

Nhận định cá nhân:  Đây là một góc nhìn rất đời mà tôi cũng thường nghe trong triết lý phương Đông.   Thành công là sự tổng hợp của năng lực + bối cảnh + may mắn.

🤖 13. Góc nhìn: AI là kỹ năng mới

- Biết dùng AI = skill

- Giao tiếp với AI

- Điều phối AI

Góc nhìn cá nhân: Đúng là AI là một 'công cụ trí tuệ' mới mà con người có thể dùng để giải quyết vấn đề trong cuộc sống và công việc do đó người tồn tại là người biết vận dụng nó. 

🎓 14. Góc nhìn: Vai trò thực sự của đại học

Không phải:  dạy kiến thức

Mà là:

- dạy cách học

- dạy tư duy

- dạy làm việc nhóm

Góc nhìn cá nhân:  Khá nhiều người đã đề cập việc Đại học cần đánh giá lại mục tiêu đào tạo là gì khi kiến thức chuyên môn không còn là thứ duy nhất mà xã hội và thị trường lao động trong thời đại AI cần ở người lao động có bằng cấp đại học. 

🧭 15. Góc nhìn: Định nghĩa lại “xin việc”

Không còn “xin” mà là “ứng tuyển / hợp tác”

Góc nhìn cá nhân:  Đúng là thế hệ trẻ cần thay đổi tâm thế từ 'xin việc' qua 'ứng tuyển' vì bạn là người có khả năng trao đổi giá trị chứ không phải xin cho. 

❓ 16. Góc nhìn chất vấn (câu hỏi mở)

Một số comment không trả lời mà đặt vấn đề:

- Có nên học đại học không?

- Giá trị thật của bằng là gì?

- Giáo dục nên dạy gì trong thời AI?

- Làm trái ngành thì lợi thế là gì?

Góc nhìn cá nhân:  Đây là những câu hỏi rất thực tế và rất giá trị.  Đây có thể là tiêu đề cho những bài tiếp theo.

🌱 17. Góc nhìn nhân văn / triết lý sống

Tình yêu, lòng trắc ẩn

Phước báu

“Bi – trí – dũng”

Góc nhìn cá nhân:  Đúng là cạnh tranh không chỉ là kinh tế mà còn ở giá trị con người

⚠️ 18. Góc nhìn cực đoan / phản biện mạnh

- “Xã hội không cần kiến thức”

- “Bằng là tờ giấy”

Hoặc ngược lại:

- “Không có kiến thức thì là gì?”

Góc nhìn cá nhân:  Từ góc nhìn này và qua các góc nhìn khác  ở trên bạn nhận ra xã hội lúc nào cũng có sự phân cực nhận thức. 

KẾT LUẬN:  Nhận thức của mỗi người dựa vào kiến thức và trải nghiệm trong quá khứ của người đó.  Do đó từ một câu hỏi thực tế mà bạn có thể nhận thấy có đến 18 góc nhìn khác nhau.  Không có đúng và cũng chẳng có sai.  Tuy theo góc nhìn của bạn mà bạn sẽ đưa ra quyết định hành động như thế nào để tăng lợi  thế cạnh tranh của mình trong môi trường sống đầy biến động như hiện nay. 

Một lần nữa, cảm ơn tất cả các bạn đã góp ý và chúc các bạn một tuần mới vui vẻ.

Trương Nguyện Thành 

@highlight


Python (19) - Một số xử lý trên danh sách

Bài trước: Python (18) - Dữ liệu kiểu Danh sách
-----
19. Một số xử lý trên Danh sách

Ở bài học trước, bạn đã biết cách tạo danh sách và truy cập các phần tử. Trong phần này, chúng ta sẽ học một số xử lý cơ bản trên danh sách.

19.1 Xử lý phần tử

Thay đổi phần tử

Để thay đổi giá trị của một phần tử, bạn chỉ cần gọi tên Danh sách kèm chỉ số (index) của nó và gán giá trị mới.

Ví dụ: Thay đổi loại trái cây, ở phần tử thứ hai trong danh sách

trai_cay = ["táo", "chuối", "cam"]

trai_cay[1] = "xoài" # Thay "chuối" bằng "xoài"

print(trai_cay) # Kết quả: ['táo', 'xoài', 'cam']


Thêm phần tử

Để thêm phần tử mới vào danh sách, chúng ta có hai cách:

- append(): Thêm vào cuối danh sách

- insert(): Chèn vào một vị trí cụ thể

Ví dụ:

lop_hoc = ["An", "Bình"]

lop_hoc.append("Chi") # Thêm "Chi" vào cuối

lop_hoc.insert(1, "Dũng") # Chèn "Dũng" vào vị trí số 1

print(lop_hoc) # Kết quả: ['An', 'Dũng', 'Bình', 'Chi']


Xóa phần tử

Có nhiều cách để xóa một phần tử ra khỏi danh sách:

- remove(): Xóa theo giá trị cụ thể

- pop(): Xóa theo chỉ số (nếu không để chỉ số, nó sẽ xóa phần tử cuối cùng)

- clear(): Xóa toàn bộ các phần tử, chỉ còn lại một danh sách rỗng

Ví dụ:

do_choi = ["xe", "búp bê", "robot"]

do_choi.remove("xe") # Xóa "xe"

print(do_choi) # Kết quả: ["búp bê", "robot"]

do_choi.pop(0) # Xóa phần tử đầu tiên

print(do_choi) # Kết quả: ['robot']

do_choi.clear()

print(do_choi) # []


19.2 Xử lý danh sách

Duyệt qua danh sách

Chúng ta thường dùng vòng lặp for để duyệt qua từng phần tử và thực hiện công việc nào đó.

Ví dụ:

mon_an = ["rau xanh", "bánh tráng", "mì gói", "xúc xích"]

for x in mon_an:

    print(f"Tôi thích ăn {x}")


Tạo danh sách mới

Đây là cách viết ngắn gọn để tạo ra một danh sách mới từ danh sách cũ chỉ trên một dòng lệnh.

Ví dụ: Tạo danh sách mới chỉ chứa các trái cây có chữ "a"

trai_cay = ["táo", "chuối", "kiwi", "cam"]

moi = [x for x in trai_cay if "a" in x]

print(moi) # Kết quả: ['táo', 'chuối', 'cam']


Sắp xếp các phần tử trong danh sách

Bạn có thể sắp xếp các phần tử trong danh sách theo thứ tự bảng chữ cái hoặc theo giá trị từ nhỏ đến lớn bằng phương thức sort().

Ví dụ:

diem_so = [8, 5, 10, 7]

diem_so.sort() # Sắp xếp tăng dần

print(diem_so) # Kết quả: [5, 7, 8, 10]


Sao chép danh sách

Bạn không thể sao chép danh sách bằng cách viết list2 = list1 vì khi bạn sửa list1 thì list2 cũng bị sửa theo. Hãy dùng phương thức copy().

Ví dụ:

diem_so1 = [7, 5, 8 ]

diem_so2 = diem_so1.copy()

print(diem_so2) # [7, 5, 8]


Một số phương thức khác

Python cung cấp một số hàm khác để làm việc với danh sách:\

- len(): Đếm xem danh sách có bao nhiêu phần tử

- count(): Đếm một giá trị xuất hiện bao nhiêu lần

- reverse(): Đảo ngược thứ tự các phần tử trong danh sách

19.3 Bài tập và câu hỏi

Bài tập

Bài 19a. Nhật ký phép tính

Yêu cầu: Tạo một danh sách lich_su = []. Sử dụng vòng lặp while để cho người dùng thực hiện không giới hạn các phép tính (+, -, *, /). Mỗi khi người dùng thực hiện một phép tính (ví dụ: 5 + 3 = 8), hãy dùng append() để lưu chuỗi "5 + 3 = 8" vào danh sách. Cuối cùng, in toàn bộ lịch sử ra màn hình bằng vòng lặp for.

Bài 19b. Máy tính cộng nhiều số Yêu cầu: Cho người dùng nhập vào một dãy số cách nhau bởi dấu phẩy (ví dụ: "10,20,30"). Sử dụng split(",") để biến nó thành một danh sách, sau đó dùng vòng lặp for để tính tổng tất cả các số đó.

Câu hỏi ôn tập

Câu 19.1: Để thêm một phần tử vào đầu danh sách, bạn sử dụng lệnh nào?

A. append()

B. insert(0, giá_trị)

C. add()

D. push()

Câu 19.2: Lệnh trai_cay.sort(reverse=True) sẽ làm gì?

A. Xóa toàn bộ danh sách

B. Sắp xếp danh sách theo thứ tự tăng dần

C. Sắp xếp danh sách theo thứ tự giảm dần/ngược bảng chữ cái

D. Đảo ngược danh sách mà không sắp xếp

Câu 19.3: Kết quả của đoạn mã sau là gì?

ds = [1, 2, 3]; ds.pop(); print(ds)

A. [1, 2, 3]

B. [2, 3]

C. [1, 3]

D. [1, 2]

19. List Operations

In the previous lesson, you learned how to create lists and access elements. In this section, we will explore fundamental list operations.

19.1 Element Operations

Modifying Elements

To change the value of an element, simply reference the List name along with its index and assign a new value.

Example: Changing the second fruit in the list

fruits = ["apple", "banana", "orange"]

fruits[1] = "mango" # Replaces "banana" with "mango"

print(fruits) # Output: ['apple', 'mango', 'orange']

Adding Elements 

There are two primary ways to add new elements to a list:

- append(): Adds an element to the end of the list

- insert(): Inserts an element at a specific index

Example:

classroom = ["An", "Binh"]

classroom.append("Chi")      # Adds "Chi" to the end

classroom.insert(1, "Dung")  # Inserts "Dung" at index 1

print(classroom) # Output: ['An', 'Dung', 'Binh', 'Chi']

Removing Elements 

There are several ways to remove elements:

- remove(): Removes a specific value

- pop(): Removes an element by index (if no index is provided, it removes the last item)

- clear(): Removes all elements, leaving an empty list

Example:

toys = ["car", "doll", "robot"]

toys.remove("car") # Removes "car"

print(toys)        # Output: ["doll", "robot"]

toys.pop(0)        # Removes the first element

print(toys)        # Output: ['robot']

toys.clear()

print(toys)        # Output: []

19.2 List Processing

Iterating through a List 

We typically use a for loop to iterate (loop) through each element to perform an action.

Example:

dishes = ["green veggies", "rice paper", "instant noodles", "sausage"]

for x in dishes:

    print(f"I like eating {x}")

List Comprehension 

This is a concise way to create a new list from an existing one in a single line of code.

Example: Create a new list containing only fruits that have the letter "a"

fruits = ["apple", "banana", "kiwi", "orange"]

new_list = [x for x in fruits if "a" in x]

print(new_list) # Output: ['apple', 'banana', 'orange']

Sorting Elements 

You can sort elements alphabetically or numerically (ascending) using the sort() method.

Example:

scores = [8, 5, 10, 7]

scores.sort() # Sorts in ascending order

print(scores) # Output: [5, 7, 8, 10]

Copying a List 

You cannot copy a list using list2 = list1 because modifying list1 will also change list2 (they point to the same object). Use the copy() method instead.

Example:

scores1 = [7, 5, 8]

scores2 = scores1.copy()

print(scores2) # Output: [7, 5, 8]

Other Built-in Methods 

Python provides additional functions for list manipulation:

- len(): Returns the number of elements in the list

- count(): Counts how many times a specific value appears

- reverse(): Reverses the order of elements in the list

19.3 Exercises and Review

Exercises

Exercise 19a. Calculation Log 

Requirement: Create a list history = []. Use a while loop to allow the user to perform unlimited calculations (+, -, *, /). Each time a calculation is performed (e.g., $5 + 3 = 8$), use append() to save the string "5 + 3 = 8" into the list. Finally, print the entire history using a for loop.

Exercise 19b. Multi-number Calculator 

Requirement: Have the user input a series of numbers separated by commas (e.g., "10,20,30"). Use split(",") to convert it into a list, then use a for loop to calculate the sum of all those numbers.

Review Questions 

Q 19.1: Which command is used to add an element to the beginning of a list? 

A. append()

B. insert(0, value)

C. add()

D. push()

Q 19.2: What does the command fruits.sort(reverse=True) do? 

A. Clears the entire list

B. Sorts the list in ascending order

C. Sorts the list in descending/reverse alphabetical order

D. Reverses the list without sorting

Q 19.3: What is the output of the following code? ds = [1, 2, 3]; ds.pop(); print(ds)

A. [1, 2, 3]

B. [2, 3]

C. [1, 3]

D. [1, 2]

-----
Bài sau: