這種差異讓我感到困惑:>>> s = "()())()">>> print set(s)set([')', '('])>>> print {s}set(['()())()'])為什么?
3 回答

慕工程0101907
TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
set()
將一個(gè)可迭代對象作為參數(shù),其項(xiàng)將是集合的元素。
因此, set('my string') 將包含我傳遞給它的可迭代對象的每個(gè)字符,即 {'m', 'y' ...}
使用{}
,您可以通過寫下每個(gè)元素來創(chuàng)建集合,并用逗號分隔。
{'my string'} 包含一個(gè)元素,字符串 'my string'

手掌心
TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
當(dāng)你寫:
set(s)
它將字符串視為可迭代對象,并創(chuàng)建一個(gè)包含其元素的集合。字符串的元素是單個(gè)字符。所以它相當(dāng)于做:
{'(', ')', '(', ')', ')', '(', ')'}
由于集合不能包含重復(fù)元素,因此您會得到一個(gè)包含兩個(gè)唯一字符'('
和的集合')'
。
但是,當(dāng)你寫:
{s}
它只是創(chuàng)建一個(gè)集合,其元素是變量的值。的{}
語法將每一個(gè)變量為單個(gè)元件,而不是遍歷它。
該set()
函數(shù)經(jīng)常用于將一種集合轉(zhuǎn)換為一組其元素,這就是它迭代它的原因。
添加回答
舉報(bào)
0/150
提交
取消