Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Duyệt (iterate) qua Set trong Python


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ặc set[a:b] trực tiếp.
  • Muốn thứ tự xác định: sorted(set_inp) hoặc list(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.