這句話的意思其實是:
你可以先用 list 暫存資料,最後再轉成 set
✅ 這種做法是合理也常見的!
其實 可以!像這樣:
S1 = set()
while True:
i = int(input("請輸入整數(-9999 結束):"))
if i == -9999:
break
S1.add(i) # 直接加入集合
✅ 這樣也完全 OK,而且集合 set 會自動去除重複值。
方法 可行性 說明
用 list.append() 先儲存,再轉 set() ✅ 可以 結尾再去重、方便除錯與顯示原始輸入順序
直接用 set.add() 儲存 ✅ 更直接 馬上去重、省記憶體、更有效率
若你需要保留輸入順序 ➜ 先用 list
若你只在意唯一性(不重複) ➜ 用 set.add() 就好!
from collections import OrderedDict
nums = []
while True:
i = int(input("key in: "))
if i == -9999:
break
nums.append(i)
unique_ordered = list(dict.fromkeys(nums)) # Python 3.7+ 保序去重
print("不重複的輸入(保留順序):", unique_ordered)
原來集合可以用add(),這樣很省事,集合 set 的 .add() 方法真的超實用,尤其是在需要「唯一、不重複資料」的情境下!
方法 功能 範例
s.add(x) 加入元素 x s.add(10)
s.remove(x) 移除元素 x(若不存在會報錯) s.remove(10)
s.discard(x) 移除元素 x(若不存在不報錯) s.discard(10)
s.clear() 清空集合 s.clear()
x in s 判斷元素是否在集合中 if 10 in s:
len(s) 集合長度 len(s)
`s1 s2` 聯集(或)
s1 & s2 交集(且) s1.intersection(s2)
s1 - s2 差集 s1.difference(s2)
如果你之後遇到「輸入多筆資料,要去除重複又要排序」,可以考慮:
sorted(set(data)) # 去重後排序