セット番号を追加
答えて
Pythonでは、シーケンスを変更するメソッドがNone
を返すという規則があります。
は考えてみましょう:
:
>>> a_list = [3, 2, 1] >>> print a_list.sort() None >>> a_list [1, 2, 3] >>> a_dict = {} >>> print a_dict.__setitem__('a', 1) None >>> a_dict {'a': 1} >>> a_set = set() >>> print a_set.add(1) None >>> a_set set([1])
がいくつかは、この大会 "Pythonで恐ろしいmisdesign" が、(リストに関して)設計し、この設計上の決定の背後にある歴史よくある質問gives the reasoningを考慮することができますなぜ
list.sort(
)ソートされたリストを返しますか?パフォーマンスの問題が発生した場合は、リストのコピーを並べ替えるだけで無駄になります。したがって、
list.sort()
は、 リストを所定の場所にソートします。その事実を思い出させるために、ソートされたリスト を返しません。この方法では、ソートされたコピーが必要なときに偶発的に のリストを上書きするだけでなく、 を未分類のバージョンに保つ必要があります。Python 2.4では、新しい組み込み関数 -
sorted()
- が追加されました。 この関数は、指定されたイテラブルから新しいリストを作成し、 をソートして返します。
この機能の特有の問題は、言語の誤った設計ではなく、セットを作成するための良い方法の誤解が原因です。 Latitudeware points outとして、Python 2.7以降では、リテラルa = {1}
またはa = set([1])
をSven Marnachのanswerとして使用することができます。
私は、オブジェクトを変更するメソッドの後に感嘆符を置くRubyの規則を好きですが、私はPythonのアプローチを受け入れることができます。比較的単純でそれを行うには
add()
のでNone
返す場所にセットし・修正されています
>>> empty = set()
>>> print(empty.add(1))
None
>>> empty
set([1])
あなたはこれを行う必要があります:あなたはa
に追加1
の結果を代入している
a = set()
a.add(1)
print a
お知らせを、 Pythonで定義されているadd
操作はNone
を返します。これがに割り当てられますあなたのコードの3210。
また、あなたはセットを初期化するためにこれを行うことができます。
a = set([1, 2, 3])
add()
方法は、セットに要素を追加しますが、それは再びセットを返さない - それはNone
を返します。
a = set()
a.add(1)
またはより良い
a = set([1])
が働くだろう。
ありがとうございます。それはPythonのひどい誤ったデザインのようです。どう思いますか? – Randomblue
@Randomblue: 'set.add()'が再びセットを返すと全く混乱していたと思います。それはなぜでしょうか?コンベンションは次のようなものです。オブジェクトが定位置に変更された場合、 'None'を返します。新しいオブジェクトを作成する場合は、新しいオブジェクトを返します。それはちょうどそれがされている方法です。 –
@RandomBlue:あなたのフォローアップの質問に答える答えを作成しました。 –
addメソッドはセットを更新しますが、Noneを返します。
a = set()
a.add(1)
print a
返される値は、set().add(1)
に割り当てられます。この値はNone
です。add()
は値を返しません。その代わりに、リストのインプレースで動作します。あなたがやりたいこと
は、このでした:もちろん
a = set()
a.add(1)
print(a)
、この例では簡単ですが、Pythonはセットリテラルをサポートしていますので、あなたが本当にこれをやってみたかったならば、それは何をする方が良いでしょう。
警告されるがa = {1}
print(a)
中括弧は{}
が空のdict、中括弧ではないがdictsとセットの両方のために使用されるという事実による空集合(辞書は、コロンの使用によって分離されているを示し、(集合を表しますキーと値を区切る)
もう一つの方法は、次のようになります。
a = set()
a = set() | {1}
これはあなたの集合Aと要素として1とセット
プリント(a)の利回り{1間の結合を作成します}とすると、aはaと{1}の両方の要素をすべて持つことになるため、
a = set()| {1} "インプレース"演算子を検討してください:
a = set()
a |= {1}
- 1. SQLクエリの結果セットに行番号を追加します。
- 2. 番号内の番号を追加し、一緒
- 3. 番号1をセットに追加しても効果がありません
- 4. テーブルに番号IDを追加
- 5. ページ番号をリピータに追加する
- 6. バーコードにページ番号を追加
- 7. 電話番号に " - "を追加する
- 8. 追加フラクション番号はPHPで
- 9. PDOでのページ番号の追加
- 10. Magento追跡番号テンプレートのエラーを追加
- 11. 番号(文字セットが付属)JavaScriptの
- 12. 郵便番号のセットのマッピング
- 13. 追跡番号パターン
- 14. 追加クエリでプライマリキーの次の連続番号を追加する
- 15. jQuery Table AddRowプラグイン追加された行にID番号を追加する
- 16. dompdfのページ番号を含むヘッダとフッタを追加する
- 17. PHPは開始番号に番号を付け加えます。
- 18. VBAにアクセスする - Excelのセルに番号を追加する
- 19. Play 2.0:ページフッターにSBTビルド番号を追加するには
- 20. jqueryデータ型に行番号の列を追加する
- 21. アドレス帳に電話番号やメールアドレスを追加するiPhoneApp
- 22. RSSフィード番号がゼロのときにウェブサイトにテキストを追加
- 23. すべてのHTMLタグに番号属性を追加する
- 24. 連絡先にカスタムタイプの番号を追加する[Android]
- 25. NLog ::ログにソースコード行番号を追加する
- 26. Wordpressでグローバルパラメータを追加する方法(例:電話番号)?
- 27. MS Access 03 - 同じID番号を追加するクエリ式
- 28. 基準戻り値にページ番号を追加したい
- 29. このT-SQLクエリに行番号を追加
- 30. 番号に ".f"を追加する目的は?
@CharlesB答えを出す場合は、答えで行う必要があります。セミコロンを使用するのは恐ろしいことです。 Pythonは読み込み可能であることを意図しており、複数の文を1行にまとめることは、読みやすさにとって非常に悪いことです。 –
@GarethLatty:彼は質問にも答えていません。 – user443854