Set là tập hợp không trùng lặp, không thứ tự. Duyệt qua set tương tự list nhưng không hỗ trợ index/slice trực tiếp.
Phương pháp 1: Vòng lặp for trực tiếp (Khuyên dùng)
set_inp = {'t','u','t','o','r','i','a','l','s','p','o','i','n','t'}
# Tự động loại trùng: {'t','u','o','r','i','a','l','s','p','n'}
for val in set_inp:
print(val, end='')
# Kết quả thứ tự ngẫu nhiên: plsrainuto (ví dụ)
Phương pháp 2: Chuyển sang list rồi duyệt index
set_inp = list({'t','u','t','o','r','i','a','l','s','p','o','i','n','t'})
for i in range(len(set_inp)):
print(set_inp[i], end='')
Phương pháp 3: Dùng enumerate()
set_inp = {'t','u','t','o','r','i','a','l','s','p','o','i','n','t'}
for idx, val in enumerate(set_inp):
print(f"{idx}: {val}")
Phương pháp 4: Chỉ số âm (cần chuyển list)
set_inp = list({'t','u','t','o','r','i','a','l','s','p','o','i','n','t'})
for i in range(-len(set_inp), 0):
print(set_inp[i], end='')
Phương pháp 5: Slicing (cần chuyển list)
set_inp = list({'t','u','t','o','r','i','a','l','s','p','o','i','n','t'})
for i in range(1, len(set_inp)):
print(set_inp[i-1:i], end='')
print(set_inp[-1:])
Lưu ý quan trọng
- Set không bảo đảm thứ tự (tuy Python 3.7+ dict保持插入顺序, set vẫn không).
- Không dùng
set[i]hoặcset[a:b]trực tiếp. - Muốn thứ tự xác định:
sorted(set_inp)hoặclist(set_inp)(thứ tự arbitrary nhưng cố định trong một run).
Kết luận
Duyệt set tốt nhất là for item in my_set. Cần index/slice → chuyển list trước.