set的內部結構和dict很像,惟一區別是不存儲value,所以,判斷一個元素是否在set中速度很快。測試
set存儲的元素和dict的key相似,必須是不變對象,所以,任何可變對象是不能放入set中的。spa
最後,set存儲的元素也是沒有順序的。code
set特色:速度快、元素不可變、存儲的元素沒有順序對象
set的這些特色,能夠應用在哪些地方呢?ip
星期一到星期日能夠用字符串'MON', 'TUE', ... 'SUN'表示。字符串
假設咱們讓用戶輸入星期一至星期日的某天,如何判斷用戶的輸入是不是一個有效的星期呢?input
能夠用 if 語句判斷,但這樣作很是繁瑣:io
x = '???' # 用戶輸入的字符串 if x!= 'MON' and x!= 'TUE' and x!= 'WED' ... and x!= 'SUN': print 'input error' else: print 'input ok'
注意:if 語句中的...表示沒有列出的其它星期名稱,測試時,請輸入完整。class
若是事先建立好一個set,包含'MON' ~ 'SUN':error
weekdays = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'])
再判斷輸入是否有效,只須要判斷該字符串是否在set中:
x = '???' # 用戶輸入的字符串 if x in weekdays: print 'input ok' else: print 'input error'
這樣一來,代碼就簡單多了。