1. Giới thiệu về Collection trong Python
Python cung cấp nhiều kiểu dữ liệu Collection (tập hợp) giúp lưu trữ và quản lý nhiều phần tử trong một biến. Các kiểu dữ liệu Collection chính trong Python gồm:
Kiểu dữ liệu | Đặc điểm chính | Có thứ tự không? | Có thể thay đổi không? | Cho phép trùng lặp? |
---|---|---|---|---|
List | Danh sách có thể thay đổi | ✅ Có | ✅ Có | ✅ Có |
Tuple | Danh sách bất biến | ✅ Có | ❌ Không | ✅ Có |
Set | Tập hợp không có thứ tự, không trùng lặp | ❌ Không | ✅ Có | ❌ Không |
Dictionary | Tập hợp key-value | ✅ Có (Python 3.7+) | ✅ Có | ❌ Không (trùng key sẽ bị ghi đè) |
2. Kiểu danh sách (List)
2.1. Khai báo danh sách
<h1>Danh sách rỗng</h1> my_list = [] <h1>Danh sách chứa các phần tử</h1> fruits = ["Táo", "Chuối", "Cam"] <h1>Danh sách có nhiều kiểu dữ liệu khác nhau</h1> mixed_list = [1, "Python", True, 3.14]
2.2. Truy cập phần tử
fruits = ["Táo", "Chuối", "Cam"] print(fruits[0]) # Táo (truy cập phần tử đầu tiên) print(fruits[-1]) # Cam (truy cập phần tử cuối) print(fruits[1:3]) # ['Chuối', 'Cam'] (lấy phần tử từ chỉ mục 1 đến 2) ``` <h3><strong>2.3. Thêm và xóa phần tử</strong></h3> [python] fruits.append("Dưa hấu") # Thêm vào cuối fruits.insert(1, "Lê") # Thêm vào vị trí cụ thể fruits.remove("Chuối") # Xóa phần tử fruits.pop() # Xóa phần tử cuối cùng fruits.clear() # Xóa toàn bộ danh sách
2.4. Duyệt danh sách bằng vòng lặp
for fruit in fruits: print(fruit)
3. Kiểu bộ (Tuple)
3.1. Khai báo Tuple
my_tuple = (1, 2, 3, "Python", True)
3.2. Truy cập phần tử
print(my_tuple[0]) # 1 print(my_tuple[-1]) # True print(my_tuple[1:3]) # (2, 3)
3.3. Không thể thay đổi giá trị
my_tuple[0] = 100 # Lỗi: tuple không thể thay đổi
3.4. Tuple có thể chứa danh sách
nested_tuple = (1, [2, 3], "Python") nested_tuple[1][0] = 100 # Có thể thay đổi danh sách bên trong tuple
4. Kiểu tập hợp (Set)
4.1. Khai báo Set
my_set = {1, 2, 3, 4} another_set = set([5, 6, 7])
4.2. Set không cho phép phần tử trùng lặp
unique_set = {1, 2, 2, 3, 4} print(unique_set) # {1, 2, 3, 4}
4.3. Thêm và xóa phần tử
my_set.add(5) # Thêm phần tử my_set.remove(2) # Xóa phần tử (báo lỗi nếu không tồn tại) my_set.discard(3) # Xóa phần tử (không báo lỗi nếu không tồn tại) my_set.clear() # Xóa toàn bộ set
4.4. Toán tử trên Set
set1 = {1, 2, 3} set2 = {3, 4, 5} print(set1 | set2) # {1, 2, 3, 4, 5} (hợp) print(set1 & set2) # {3} (giao) print(set1 - set2) # {1, 2} (phần khác nhau) print(set1 ^ set2) # {1, 2, 4, 5} (phần tử chỉ xuất hiện trong 1 set)
5. Kiểu từ điển (Dictionary)
5.1. Khai báo Dictionary
student = { "name": "John", "age": 21, "major": "Computer Science" }
5.2. Truy cập giá trị
print(student["name"]) # John print(student.get("age")) # 21
5.3. Thêm, cập nhật, xóa phần tử
student["gender"] = "Male" # Thêm mới key-value student["age"] = 22 # Cập nhật giá trị del student["major"] # Xóa một key student.pop("age") # Xóa key "age" student.clear() # Xóa toàn bộ dictionary
5.4. Duyệt Dictionary
for key, value in student.items(): print(key, ":", value)
6. Bài tập về Collection
Dưới đây là 10 bài tập thực hành về Collection (List, Tuple, Set, Dictionary) trong Python, kèm theo gợi ý giải.
BÀI TẬP VỀ LIST
Bài 1: Tính tổng và trung bình cộng các phần tử trong danh sách
Viết chương trình nhập vào một danh sách n
số nguyên, sau đó tính tổng và trung bình cộng của các phần tử trong danh sách.
Ví dụ:
Nhập số lượng phần tử: 5 Nhập phần tử thứ 1: 10 Nhập phần tử thứ 2: 20 Nhập phần tử thứ 3: 30 Nhập phần tử thứ 4: 40 Nhập phần tử thứ 5: 50 Tổng: 150 Trung bình cộng: 30.0
Gợi ý giải:
n = int(input("Nhập số lượng phần tử: ")) lst = [] for i in range(n): num = int(input(f"Nhập phần tử thứ {i+1}: ")) lst.append(num) tong = sum(lst) trung_binh = tong / len(lst) print("Tổng:", tong) print("Trung bình cộng:", trung_binh)
Bài 2: Tìm số lớn nhất và nhỏ nhất trong danh sách
Viết chương trình tìm số lớn nhất và số nhỏ nhất trong một danh sách số nguyên.
Gợi ý giải:
numbers = [12, 5, 8, 34, 89, 1] print("Số lớn nhất:", max(numbers)) print("Số nhỏ nhất:", min(numbers))
Bài 3: Đảo ngược danh sách
Viết chương trình đảo ngược thứ tự các phần tử trong danh sách.
Gợi ý giải:
numbers = [1, 2, 3, 4, 5] numbers.reverse() print("Danh sách sau khi đảo ngược:", numbers)
Bài 4: Loại bỏ phần tử trùng lặp trong danh sách
Viết chương trình loại bỏ các phần tử trùng lặp trong danh sách.
Gợi ý giải:
numbers = [1, 2, 3, 2, 4, 5, 1] unique_numbers = list(set(numbers)) print("Danh sách sau khi loại bỏ trùng lặp:", unique_numbers)
BÀI TẬP VỀ TUPLE
Bài 5: Tính tổng các phần tử trong Tuple
Viết chương trình tính tổng tất cả các phần tử trong một Tuple số nguyên.
Gợi ý giải:
my_tuple = (10, 20, 30, 40) tong = sum(my_tuple) print("Tổng các phần tử:", tong)
Bài 6: Chuyển đổi Tuple thành List và ngược lại
Viết chương trình chuyển đổi một Tuple thành List và ngược lại.
Gợi ý giải:
my_tuple = (1, 2, 3, 4) my_list = list(my_tuple) print("Danh sách:", my_list) new_tuple = tuple(my_list) print("Tuple:", new_tuple)
BÀI TẬP VỀ SET
Bài 7: Tìm phần tử chung giữa hai Set
Viết chương trình nhập vào hai Set và tìm phần tử chung giữa chúng.
Ví dụ:
Set 1: {1, 2, 3, 4} Set 2: {3, 4, 5, 6} Phần tử chung: {3, 4}
Gợi ý giải:
set1 = {1, 2, 3, 4} set2 = {3, 4, 5, 6} common_elements = set1 & set2 print("Phần tử chung:", common_elements)
Bài 8: Hợp hai Set và loại bỏ trùng lặp
Viết chương trình nhập vào hai Set, sau đó hợp nhất chúng lại và loại bỏ phần tử trùng lặp.
Gợi ý giải:
set1 = {1, 2, 3} set2 = {3, 4, 5} merged_set = set1 | set2 print("Set sau khi hợp nhất:", merged_set)
BÀI TẬP VỀ DICTIONARY
Bài 9: Đếm số lần xuất hiện của từ trong chuỗi
Viết chương trình đếm số lần xuất hiện của từng từ trong một chuỗi và lưu vào Dictionary.
Ví dụ:
Nhập chuỗi: python python java python c++ Kết quả: {'python': 3, 'java': 1, 'c++': 1}
Gợi ý giải:
text = input("Nhập chuỗi: ").split() word_count = {} for word in text: word_count[word] = word_count.get(word, 0) + 1 print("Kết quả:", word_count)
Bài 10: Quản lý thông tin sinh viên
Viết chương trình tạo một Dictionary chứa thông tin của một sinh viên gồm:
name
: Tên sinh viênage
: Tuổimajor
: Ngành học
Sau đó, in ra thông tin sinh viên theo từng dòng.
Ví dụ:
Nhập tên: John Nhập tuổi: 20 Nhập ngành học: CNTT Thông tin sinh viên: Tên: John Tuổi: 20 Ngành học: CNTT
Gợi ý giải:
student = {} student["name"] = input("Nhập tên: ") student["age"] = int(input("Nhập tuổi: ")) student["major"] = input("Nhập ngành học: ") print("\nThông tin sinh viên:") for key, value in student.items(): print(f"{key.capitalize()}: {value}")
6. Tổng kết
Kiểu dữ liệu | Đặc điểm chính |
---|---|
List | Có thứ tự, thay đổi được, cho phép trùng lặp |
Tuple | Có thứ tự, không thay đổi được, cho phép trùng lặp |
Set | Không có thứ tự, không cho phép trùng lặp |
Dictionary | Lưu trữ theo cặp key-value, không trùng key |