0

Python で、問題の変数がタプルを保持しているか、少なくとも 1 つのタプルを含むリストを保持しているかにかかわらず、常にタプルを返す簡単な方法は何ですか?

# (3, 5) would return (3, 5)
#
# [(3, 5), [200, 100, 100]] would return (3, 5)
#
# [[100, 100, 100], (3, 5)] would return (3, 5)
#
# [(3, 5), (4, 7)] would return (3, 5)
4

1 に答える 1

3

私が実際にこのようなものを 必要とした場合、私は次のようなことをします:

def first_tuple(t):
    return t if isinstance(t,tuple) else next(x for x in t if isinstance(x,tuple))

デモ:

>>> first_tuple((3,5))
(3, 5)
>>> first_tuple([(3, 5), [200, 100, 100]])
(3, 5)
>>> first_tuple([[100, 100, 100], (3, 5)])
(3, 5)
>>> first_tuple([(3, 5), (4, 7)])
(3, 5)
>>> first_tuple([[],[]])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in first_tuple
StopIteration

一般的に言って、このようなものは必要ありません。私見ですが、これはおそらく設計が不十分であるように思われるため、ここでのデータ構造を再検討する必要があります。

于 2013-03-10T19:07:28.503 に答える