質問

Pythonできるのは、複数の関数の戻り値です。この逆の例:

def divide(x, y):
    quotient = x/y
    remainder = x % y
    return quotient, remainder  

(q, r) = divide(22, 7)

これは、非常に役に立つのだということもでき虐待("どの機能が既に求め私たちに必要な中間体としての値です。まX戻り値も").

時だの描きの線を定義する別の方法は?

役に立ちましたか?

解決

絶対(たとえば、ご利用いただけます。

タプルは第一級の市民のPythonの

ある組み込み機能 divmod() ることになった。

q, r = divmod(x, y) # ((x - x%y)/y, x%y) Invariant: div*y + mod == x

ある他の例: zip, enumerate, dict.items.

for i, e in enumerate([1, 3, 3]):
    print "index=%d, element=%s" % (i, e)

# reverse keys and values in a dictionary
d = dict((v, k) for k, v in adict.items()) # or 
d = dict(zip(adict.values(), adict.keys()))

余談ですが、括弧内は必要になっています。引用から Pythonライブラリリファレンスを参照:

タプルを設置することは可能である方向:

  • ペットの括弧を主張するためには空のタプル:()
  • 使用最後のカンマのためのシングルトンのタプル:a、または(a)
  • 分項目をカンマ区切りで入力:a、b、cまたは(a,b,c)
  • のタプル()内蔵:タプル()またはタプル(list)

あるべきである単一の目的

こうを返し単一のオブジェクトです。お場合は、このオブジェクトはタプル.検討のタプルとしてアドホック化合物データ構造です。ある言語はほとんどの単機能を返します複数の値(リストLisp).

ということもあり十分な返 (x, y) の代わりに Point(x, y).

名前のタプル

の導入により名前のタプルではPython2.6するのが好ましい多くの場合の返名前のタプルな無地のタプル.

>>> import collections
>>> Point = collections.namedtuple('Point', 'x y')
>>> x, y = Point(0, 1)
>>> p = Point(x, y)
>>> x, y, p
(0, 1, Point(x=0, y=1))
>>> p.x, p.y, p[0], p[1]
(0, 1, 0, 1)
>>> for i in p:
...   print(i)
...
0
1

他のヒント

まず、Pythonでは、以下の(括弧):

q, r = divide(22, 7)

に関するご質問ありがとうが言えませます。単純通常、逆に表例であることも可能で指定された機能を単一の目的は、単一の値です。しかし、使用時のPythonのための実世界応も素早く走り込多数の場合は帰国時に複数の値が必要ですが、結果のクリーナーコードです。

そこで、私からの指示に従うことがいえないに準拠して人工約に従います。Python複数の戻り値であり、使用できます。

例えば、実際にはpythonを組み込み関数と呼ばれる divmod.誰かが、ある時点でつくられたと考えられていpythonicほどのコア機能

私の場合、これはコードクリーナーでは、pythonic.を比較しこれら二つのコードブロック

seconds = 1234
minutes, seconds = divmod(seconds, 60)
hours, minutes = divmod(minutes, 60)

seconds = 1234
minutes = seconds / 60
seconds = seconds % 60
hours = minutes / 60
minutes = minutes % 60

あり、複数の値(要素からなるタプル)はpythonic.いるその他の指摘の通り、たくさんありの例はPython標準ライブラリとしても尊重されるPythonます。追加コメント:

  1. 帰国時に複数の値が非常に便利です。例えば、する方法を任意に取り扱うイベントに返却値とても返しました。これがチェーンの責任のパターンです。その他の場合ただし、戻り、複数の密接なリンクのデータを---としての例です。この設定を返し複数の値であるかのよう返す単一のインスタンスは匿名クラスの複数のメンバ変数.
  2. Pythonの取り扱い方法で引数を必要とする機能を直接戻り複数の値です。C++では、例えば、メソッドの引数を渡すことができる参照を、指定することができ出力値は、ほかの形式を返します。Pythonでは、引数に渡され"参照"との感Java、C++).できな割り当て新しい価値をメソッドの引数としていませることができます。外の方法です。例えば:

    // C++
    void test(int& arg)
    {
        arg = 1;
    }
    
    int foo = 0;
    test(foo); // foo is now 1!
    

    との比較:

    # Python
    def test(arg):
        arg = 1
    
    foo = 0
    test(foo) # foo is still 0
    

レコード店ディスクユニオンのpythonic.ることができるというのも戻り複数の値からの機能の定型に関してはいかなる制約もなく、言語のようにCが定義する必要があり、structのための全ての組み合わせの種類を返しどこかということです。

しかし、に到達した場合、ポイントに返もう10の値は単一の機能では、真剣に検討すべき結束し、クラスがその時点かり不格好になる。

タプルで返いただけます。ものnamedtuple 追加されたpython2.6するこり口に専用に作成する方法もあります。http://docs.python.org/dev/library/collections.html#collections.namedtuple

OT:RSREのAlgol68の好奇心"/:="演算子です。例えば.

INT quotient:=355, remainder;
remainder := (quotient /:= 113);

を超3、残りの16.

注意:通常の値(x/:=y)"は切り捨てとして指数"x"が付与基準がRSREの場合、返された値になります。

c.f. 整数演算-Algol68

ま戻り複数の値を要素からなるタプルを簡単に機能など divmod.った場合には、コードの読みやすPythonic.

戻り値が複雑になり得るか否かを確認の機能がっかりすぎて分割するものであれば問題なのです。大きなタプルが使うオブジェクトでは、オブジェクトです。また、利用をお考えの 名前のタプル, は、一部の標準ライブラリにPython2.6.

私はかなり新しいPythonのタプルの技術でpythonic。しかし、私たという考えを読む辞書を使いながらアクセスでき、異なる価値観を名前ではなく位置にします。例えば:

def divide(x, y):
    return {'quotient': x/y, 'remainder':x%y }

answer = divide(22, 7)
print answer['quotient']
print answer['remainder']
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top