목록을 튜플로 변환하려고합니다.
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
...
더 이상 type
은 아니므로 더 이상은 아닙니다 Callable
.
Never
내장 유형을 변수 이름으로 사용하십시오. 사용할 다른 이름이 있습니다. 대신 변수에 임의의 이름을 사용하십시오 ...
tuple(l)
Python> = 현재 다른 대안을 추가하려면 3.5
다음을 수행하십시오.
t = *l, # or t = (*l,)
짧고 약간 빠르지 만 가독성이 떨어질 수 있습니다.
이것은 본질적으로 l
단일 쉼표로 인해 생성 된 튜플 리터럴 내부 의 목록을 압축 해제합니다 ,
.
추신 : 당신이받는 오류는 이름의 마스킹으로 인한 것입니다. tuple
즉, 예를 들어 어딘가에 튜플에 할당되었습니다 tuple = (1, 2, 3)
.
del tuple
당신을 사용 하는 것이 좋습니다.
최신 답변이 많고 제대로 답변되었지만 답변 스택에 새로운 내용이 추가됩니다.
파이썬에는 이것을 수행하는 무한한 방법이 있습니다. 여기에 몇 가지 예가
있습니다.
>>> 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)
(두 번째 방법) 보다 짧습니다 .
tuple
다른 곳 에서 변수 이름을 할당 했습니까 ?