파이썬은 목록으로 설정


159

파이썬에서 세트를 목록으로 변환하는 방법은 무엇입니까? 사용

a = set(["Blah", "Hello"])
a = list(a)

작동하지 않습니다. 그것은 나에게 준다 :

TypeError: 'set' object is not callable
python  list  set 

6
위의 내용은 Python 2.7에서 작동합니다.
aukaost

20
코드에서 다른 변수의 이름을 지정한 경우 set내장 함수를 음영 처리하므로 변수를 변경하십시오 set.
mouad

5
@mouad 아니오, 괄호 안의 문자열 은 변수 이름이 아닌 유형TypeError 의 이름입니다.
phihag

7
@ John Deed 판사 : 당신은 list = some_set어딘가에서 했어요 . print list전화하기 전에 추가 하십시오.
Jochen Ritzel

6
'list'가 PDB 명령으로 재정의되는 PDB에서 디버깅하는 동안이 문제가 발생했습니다.
WP McNeill

답변:


242

코드 작동합니다 (cpython 2.4, 2.5, 2.6, 2.7, 3.1 및 3.2로 테스트).

>>> a = set(["Blah", "Hello"])
>>> a = list(a) # You probably wrote a = list(a()) here or list = set() above
>>> a
['Blah', 'Hello']

list실수로 덮어 쓰지 않았는지 확인하십시오 .

>>> assert list == __builtins__.list

2
방금이 정확한 코드를 IDLE에 복사하여 붙여 넣었습니다. 오류가 발생합니다.

dir(set)및 의 출력을 제공 할 수 있습니까 print set?
Susam Pal

['and', 'class', 'cmp', 'contains', 'delattr', 'doc', 'eq', 'format', 'ge', 'getattribute', 'gt', 'hash', 'iand', 'init', 'ior', 'isub', 'iter', 'ixor', 'le', 'len', 'lt', 'ne', 'new', 'or', 'rand', 'reduce', 'reduce_ex', 'repr', 'ror', 'rsub', 'rxor', 'setattr', 'sizeof', 'str', 'sub', 'subclasshook', 'xor', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update'](char limit 때문에 __ 제거)

@Judge John Deed 어느 라인에서 오류가 발생합니까? 너 set괜찮아 보인다
phihag

설정 대신 설정을 시도하십시오 : REF : docs.python.org/2/library/sets.html
Gonzalo

72

실수로 변수 세트로 사용하여 내장 세트를 음영 처리했습니다. 오류를 복제하는 간단한 방법은 다음과 같습니다.

>>> set=set()
>>> set=set()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object is not callable

첫 번째 라인 은 세트를 세트 의 인스턴스 로 리 바인드 합니다. 두 번째 줄은 물론 인스턴스 를 호출 하려고 합니다.

다음은 각 변수에 다른 이름을 사용하는 혼동이 적은 버전입니다. 신선한 통역사 사용하기

>>> a=set()
>>> b=a()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object is not callable

잘하면 전화 a는 오류입니다


25

쓰기 전에 set(XXXXX) "set"을 변수로 사용했습니다. 예 :

set = 90 #you have used "set" as an object


a = set(["Blah", "Hello"])
a = list(a)

15

이것은 작동합니다 :

>>> t = [1,1,2,2,3,3,4,5]
>>> print list(set(t))
[1,2,3,4,5]

그러나 "list"또는 "set"을 변수 이름으로 사용하면 다음과 같은 결과가 나타납니다.

TypeError: 'set' object is not callable

예 :

>>> set = [1,1,2,2,3,3,4,5]
>>> print list(set(set))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable

"list"를 변수 이름으로 사용하면 동일한 오류가 발생합니다.



4

코드는 Win7 x64에서 Python 3.2.1과 작동합니다.

a = set(["Blah", "Hello"])
a = list(a)
type(a)
<class 'list'>

2

map과 lambda 함수의 조합을 사용해보십시오 :

aList = map( lambda x: x, set ([1, 2, 6, 9, 0]) )

문자열에 숫자 세트가 있고 정수 목록으로 변환하려는 경우 매우 편리한 접근 방식입니다.

aList = map( lambda x: int(x), set (['1', '2', '3', '7', '12']) )
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.