Python Set là collection type chứa tập hợp không có thứ tự (unordered) các object duy nhất (unique) và bất biến (immutable). Tức: set không chứa duplicate, và item không thể thay đổi sau khi tạo.
Lưu ý: Item của set là immutable (không thay đổi item), nhưng set bản thân là mutable (có thể add/remove item).
Thứ tự không được duy trì. Mỗi lần print cùng một set, thứ tự item có thể khác nhau.
Tạo set dùng ngoặc nhọn {}, tách item bằng dấu phẩy ,.
Giống list, set có thể chứa nhiều kiểu object khác nhau (mixed types):
mixedTypesSet = {'one', True, 13, 2.0}
Tạo Set
colorsSet = {"red", "green", "blue"}
print(colorsSet) # {'red', 'blue', 'green'} (thứ tự có thể khác)
Truy cập Item của Set
Không dùng index truy cập (vì unordered, không có index). Dùng for loop duyệt:
colorsSet = {"red", "green", "blue"}
for c in colorsSet:
print(c)
# green, red, blue (thứ tự ngẫu nhiên)
Thêm Item vào Set
- Thêm 1 item:
add() - Thêm nhiều item:
update()
Thêm một item
colorsSet = {"red", "green", "blue"}
colorsSet.add("yellow")
print(colorsSet) # {'blue', 'red', 'green', 'yellow'}
Thêm nhiều item
colorsSet = {"red", "green", "blue"}
colorsSet.update(["yellow", "orange", "white"])
print(colorsSet) # {'white', 'red', 'green', 'yellow', 'orange', 'blue'}
Xóa Item khỏi Set
Hai method: remove() và discard().
remove(): xóa item chỉ định. Ném lỗi nếu item không tồn tại.discard(): xóa item chỉ định. KHÔNG ném lỗi nếu item không tồn tại.
colorsSet = {"red", "green", "blue", "orange"}
colorsSet.remove("orange")
print(colorsSet) # {'blue', 'green', 'red'}
Xóa tất cả phần tử (Empty Set)
Dùng clear():
colorsSet = {"red", "green", "blue", "orange"}
colorsSet.clear()
print(colorsSet) # set()
Xóa Set hoàn toàn
Dùng del keyword:
colorsSet = {"red", "green", "blue", "orange"}
del colorsSet
print(colorsSet) # NameError
Độ dài Set
Dùng len():
colorsSet = {"red", "green", "blue", "orange"}
print(len(colorsSet)) # 4
Nối hai Set
Dùng union() trả về set mới chứa item từ cả hai:
colorsSet = {"red", "green", "blue", "orange"}
numbersSet = {1, 2, 3, 4}
numbersAndColors = colorsSet.union(numbersSet)
print(numbersAndColors)
# {1, 2, 'blue', 3, 4, 'green', 'red', 'orange'}