リストをタプルに変換しようとしています。
Googleのほとんどのソリューションは次のコードを提供します:
l = [4,5,6]
tuple(l)
ただし、コードを実行するとエラーメッセージが表示されます。
TypeError: 'tuple'オブジェクトは呼び出し可能ではありませんこの問題を解決するにはどうすればよいですか?
リストをタプルに変換しようとしています。
Googleのほとんどのソリューションは次のコードを提供します:
l = [4,5,6]
tuple(l)
ただし、コードを実行するとエラーメッセージが表示されます。
TypeError: 'tuple'オブジェクトは呼び出し可能ではありませんこの問題を解決するにはどうすればよいですか?
回答:
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
の元の定義を復元するにはtuple
、インタープリターを終了して再起動するか、(@ glglglに感謝):
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
タイプのtuple
なりました...
それはもはやa type
ではないので、もはやありませんCallable
。
Never
組み込みの型を変数名として使用します...使用する他の名前があります。代わりに、変数に任意の名前を使用してください...
に別の選択肢を追加するtuple(l)
には、Python> =以降で3.5
次のようにできます。
t = *l, # or t = (*l,)
短く、少し高速ですが、おそらく読みやすさに問題があります。
これは基本l
的に、単一のコンマが存在するために作成されるタプルリテラル内にリストをアンパックします,
。
Ps:受け取っているエラーは、名前のマスキング、tuple
つまり名前タプルにどこかに割り当てられているためtuple = (1, 2, 3)
です。
del tuple
あなたを使用して行くのが良いでしょう。
多くの回答が最新で適切に回答されていることがわかりましたが、回答のスタックに新しいものが追加されます。
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')
タプルは不変であり、貴重なものを格納するために使用されることを忘れないでください。たとえば、パスワード、キー、ハッシュはタプルや辞書に保存されます。ナイフが必要な場合、なぜ刀を使ってリンゴを切るのか。それを賢く使ってください、それはまたあなたのプログラムを効率的にします。
tuple(l)
(最初の方法)はtuple(item for item in l)
(2番目の方法)よりも短い。
tuple
以前に他の場所で変数名を割り当てましたか?