リストをタプルに変換しようとしています。
Google のほとんどのソリューションでは、次のコードが提供されています。
l = [4,5,6]
tuple(l)
ただし、コードを実行すると、次のエラー メッセージが表示されます。
TypeError: 'tuple' オブジェクトは呼び出し可能ではありません
この問題を解決するにはどうすればよいですか?
リストをタプルに変換しようとしています。
Google のほとんどのソリューションでは、次のコードが提供されています。
l = [4,5,6]
tuple(l)
ただし、コードを実行すると、次のエラー メッセージが表示されます。
TypeError: 'tuple' オブジェクトは呼び出し可能ではありません
この問題を解決するにはどうすればよいですか?
それはうまくいくはずです。やその他の特殊な名前を変数名として使用しないでくださいtuple
。list
それはおそらくあなたの問題を引き起こしているものです。
>>> l = [4,5,6]
>>> tuple(l)
(4, 5, 6)
>>> tuple = 'whoops' # Don't do this
>>> tuple(l)
TypeError: 'tuple' object is not callable
eumiro のコメントを拡張すると、通常tuple(l)
はリストl
がタプルに変換されます。
In [1]: l = [4,5,6]
In [2]: tuple
Out[2]: <type 'tuple'>
In [3]: tuple(l)
Out[3]: (4, 5, 6)
tuple
ただし、ではなくタプルになるように再定義した場合type
tuple
:
In [4]: tuple = tuple(l)
In [5]: tuple
Out[5]: (4, 5, 6)
タプル自体は呼び出し可能ではないため、 TypeError が発生します。
In [6]: tuple(l)
TypeError: 'tuple' object is not callable
インタプリタを終了して再起動するか、(@ glglgltuple
に感謝):
In [6]: del tuple
In [7]: tuple
Out[7]: <type 'tuple'>
あなたは次のようなことをしたかもしれません:
>>> tuple = 45, 34 # You used `tuple` as a variable here
>>> tuple
(45, 34)
>>> l = [4, 5, 6]
>>> tuple(l) # Will try to invoke the variable `tuple` rather than tuple type.
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
tuple(l)
TypeError: 'tuple' object is not callable
>>>
>>> del tuple # You can delete the object tuple created earlier to make it work
>>> tuple(l)
(4, 5, 6)
ここに問題があります...tuple
変数をtuple (45, 34)
以前に保持するために使用したため...だから、今tuple
はobject
of型tuple
です...
それはもはや atype
ではないので、それはもはや ではありませんCallable
。
Never
変数名として任意の組み込み型を使用します...使用する他の名前があります。代わりに、変数に任意の名前を使用してください...
最新で適切に回答された多くの回答を見つけましたが、回答のスタックに新しいものを追加します。
Python では、これを行う無限の方法があります。ここにいくつかの例を示します
通常の方法
>>> l= [1,2,"stackoverflow","python"]
>>> l
[1, 2, 'stackoverflow', 'python']
>>> tup = tuple(l)
>>> type(tup)
<type 'tuple'>
>>> tup
(1, 2, 'stackoverflow', 'python')
賢い方法
>>>tuple(item for item in l)
(1, 2, 'stackoverflow', 'python')
タプルは不変であり、価値のあるものを格納するために使用されることを忘れないでください。たとえば、パスワード、キー、またはハッシュはタプルまたは辞書に格納されます。ナイフが必要な場合、なぜリンゴを切るのに剣を使うのか. 賢明に使用してください。プログラムを効率的にすることにもなります。