2016-09-29 19 views
-1

私はPythonを学んでいる、私は1つのtuturialに傾いているので、可変オブジェクトが許可されていないので、変更可能なオブジェクトはリストだと思いますか?私はそれがうまく働いているこのsetで可変オブジェクトが許可されていない場合、なぜリストを許可するのですか?

x = set(["Perl", "Python", "Java"]) 

を試してみました

私はそれがまた、作業が、私はこの

citiess = set((["Python","Perl"], ["Paris", "Berlin", "London"])) 

をしようとしたとき、それはエラーを与えている

cities = set((("Python","Perl"), ("Paris", "Berlin", "London"))) 

を試してみましたか?なぜそれがエラーを出しているのですか?それがリストであれば、最初のコードが実行されているのはなぜですか?

質問に

+0

これは重複していません –

+0

リストは設定要素にすることはできません。これは失敗します: 'set()。add([1,2,3])' – VPfB

+1

@ User123999 'set([" Perl "、" Python "、" Java "])という混乱のために重複しています。 'は実際に行っています..それはアイテムのリストからセットを構築しています。 '' Perl''、 '' Python''、 '' Java''''、 '' set(( "Python"、 "Perl"、 "Python"、 "Java" "(" Python "、" Perl ")、[" Paris "、" Berlin "、" London "])' 'に' '(" "、" "、" "、" "なぜ最初の作品は、2番目の作品は明らかになりません。 '{...} 'は、設定されたリテラル表記であることに注意してください。 – SethMMorton

答えて

3

セット*可変要素を許可していませんが、set(["Perl", "Python", "Java"])で、リストは要素ではありません「アイテムリストからセットを作成する方法」のようなその同じではありませんをリダイレクトしないでください。リストの要素は新しい集合の要素として使用され、リストの要素は不変です。

*具体的には、==の比較に影響を与える方法で変更可能な要素。

+0

私は実際にはPythonでnoebieです、これを説明する少し時間を与えることができます、それは大きな助けになる "リストは要素ではありません。リストの要素は新しいセットの要素として使用され、リストの要素は不変です。 " –

+0

最初の例では、3つの文字列のセットを作成します。 'set()'コンストラクタは引数として渡されたものに基づいて集合を作成します。それはそのリストを反復し、そのリストからあなたのセットに物を追加します。 2番目の例では、法定セット要素であるタプルを扱っています。しかし、3番目のリストでは、2つのリストのセットになりますが、これは許可されません。 –

関連する問題