絶対に(あなたが提供した例のために)。
タプルはPythonの第一級市民です
divmod()
まさにそれを行う組み込み関数があります。
q, r = divmod(x, y)
他の例があります:zip
、enumerate
、dict.items
。
for i, e in enumerate([1, 3, 3]):
print "index=%d, element=%s" % (i, e)
d = dict((v, k) for k, v in adict.items())
d = dict(zip(adict.values(), adict.keys()))
ところで、括弧はほとんどの場合必要ありません。Pythonライブラリリファレンスからの引用:
タプルは、いくつかの方法で構築できます。
- 空のタプルを示すために括弧のペアを使用する:()
- シングルトンタプルの末尾のコンマの使用:a、または(a、)
- アイテムをコンマで区切る:a、b、cまたは(a、b、c)
- 組み込みのtuple()の使用:tuple()またはtuple(iterable)
関数は単一の目的を果たす必要があります
したがって、単一のオブジェクトを返す必要があります。あなたの場合、このオブジェクトはタプルです。タプルをアドホックな複合データ構造と見なします。ほとんどすべての関数が複数の値を返す言語があります(Lispのリスト)。
の(x, y)
代わりに戻るだけで十分な場合もありPoint(x, y)
ます。
名前付きタプル
Python 2.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