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


143

Python 2.6에서 집합을 목록으로 변환하려고합니다. 이 구문을 사용하고 있습니다 :

first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)

그러나 다음과 같은 스택 추적이 나타납니다.

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

이 문제를 어떻게 해결할 수 있습니까?


2
Linux의 Python 2.6.6에서 작동하지만 첫 번째 줄은 세트를 만들지 않습니다.
detly

2
에 따르면 TypeError: 'set' object is not callable: 무엇입니까 set? 덕분에
먹는

13
내장 세트를 음영 처리했습니다. 아마도 실수로 입력 set=set(first_list)했거나 무언가 일 수 있습니다. 이제이 set세트 오브젝트로 재정의되어 해당 오류가 발생합니다. 새로운 Python 인터프리터로 다시 시도
John La Rooy

3
@ gnibbler : 당신은 그것을 대답으로 놓아야합니다.
Chris Morgan

2
문제를 해결하기 위해 질문을 편집 한 것이 너무 나쁩니다. 올바른 코드를보고 혼란스러워서 생성되지 않는 오류가 발생합니다. 실제로 편집 전의 원래 질문으로 인해 오류가 표시되지 않습니다. 이것이 복사 및 붙여 넣기 오류라고 생각합니다.
LS

답변:


194

이미 목록입니다

type(my_set)
>>> <type 'list'>

당신은 같은 것을 원하십니까

my_set = set([1,2,3,4])
my_list = list(my_set)
print my_list
>> [1, 2, 3, 4]

편집 : 마지막 코멘트 출력

>>> my_list = [1,2,3,4]
>>> my_set = set(my_list)
>>> my_new_list = list(my_set)
>>> print my_new_list
[1, 2, 3, 4]

나는 당신이 이런 식으로했는지 궁금합니다.

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

4
내가 type (my_set) 할 때 <type 'set'>
gath

2
@gath, 코드를 편집하기 전이었습니다. 현재 코드가 내 컴퓨터에서 제대로 작동합니다. 파이썬 인터프리터에 그대로 복사하여 붙여 넣을 수 있고 출력을 여기에 붙여 넣을 수 있습니까
사용자

1
>>> my_list = [1,2,3,4] >>> my_set = set (my_list) >>> my_new_list = list (my_set) Traceback (가장 최근 호출) : 파일 "<console>", <모듈>의 라인 1, TypeError : 'set'객체를 호출 할 수 없음
gath

1
그는 실수로 'set'이라는 이름을 {1,2,3} 또는 [1,2,3] 또는 이와 유사한 이름으로 바인딩했습니다. (실수로 실험을했기 때문에)
user3556757

1
이 방법을 사용하여 정수 목록을 변환하는 것은 신뢰할 수 없습니다. 만약 당신의 집합이 ([1,2,12,6])있고 당신이 list(([1,2,12,6]))한다면 [1,2,1,2,6]
PradyJord

12

대신에:

first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)

왜 프로세스를 단축시키지 않겠습니까?

my_list = list(set([1,2,3,4])

그러면 목록에서 듀피가 제거되고 목록이 다시 표시됩니다.


5
둘 사이에는 차이가 없습니다. 변수 할당을 인라인했습니다.

7

[편집 됨] 이전에 "list"를 다음과 같이 변수 이름으로 사용하여 재정의 한 것 같습니다.

list = set([1,2,3,4]) # oops
#...
first_list = [1,2,3,4]
my_set=set(first_list)
my_list = list(my_set)

그리고 당신은 얻을

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

5

이러한 유형의 문제가 발생하면 다음을 사용하여 먼저 변환하려는 요소의 데이터 유형을 찾으십시오.

type(my_set)

그런 다음 다음을 사용하십시오.

  list(my_set) 

목록으로 변환합니다. 파이썬에서 새로 만든 목록을 일반 목록처럼 사용할 수 있습니다.


3

간단히 입력하십시오 :

list(my_set)

{ '1', '2'} 형식의 집합이 [ '1', '2'] 형식의 목록으로 바뀝니다.


2

첫 줄을 검토하십시오. 스택 추적은 여기에 붙여 넣은 코드에서 명확하지 않으므로 수행 한 작업을 정확히 알 수 없습니다.

>>> my_set=([1,2,3,4])
>>> my_set
[1, 2, 3, 4]
>>> type(my_set)
<type 'list'>
>>> list(my_set)
[1, 2, 3, 4]
>>> type(_)
<type 'list'>

당신이 원하는 것은 set([1, 2, 3, 4]).

>>> my_set = set([1, 2, 3, 4])
>>> my_set
set([1, 2, 3, 4])
>>> type(my_set)
<type 'set'>
>>> list(my_set)
[1, 2, 3, 4]
>>> type(_)
<type 'list'>

"호출 불가능"예외 set()()set인스턴스 호출 시도 와 같은 작업을 수행했음을 의미합니다 .


0

([1, 2])구문으로 목록을 작성하고 있는지 확실하지 않습니다 . 세트를 만들려면을 사용해야합니다 set([1, 2]).

이 괄호는 마치 당신이 작성한 것처럼 표현을 감싸고 있습니다.

if (condition1
    and condition2 == 3):
    print something

실제로 무시되지는 않지만 표현에는 아무런 영향을 미치지 않습니다.

참고 : (something, something_else)튜플을 만들지 만 여전히 목록은 없습니다.


@gath 귀하의 편집 내용은 적어도 첫 번째 블록에는 괜찮습니다. 여전히 오류가 있습니까? 새로운 명령 줄에서 시도해 볼 수 있습니까? 입력 할 때 무엇을 얻 set습니까?
Joël

0

Python은 동적으로 유형이 지정된 언어이므로 C 또는 C ++에서와 같이 변수 유형을 정의 할 수 없습니다.

type variable = value

또는

type variable(value)

파이썬에서는 타입을 변경하거나 타입의 init 함수 (생성자)를 변경하는 경우 강제 변환을 사용하여 타입의 변수를 선언합니다.

my_set = set([1,2,3])
type my_set

<type 'set'>답변 을 드릴 것 입니다.

목록이 있으면 다음을 수행하십시오.

my_list = [1,2,3]
my_set = set(my_list)

-1

흠 나는 이전 라인에서 다음과 같은 것을 내기했다.

list = set(something)

내가 잘못 ?


위의 답변 중 하나에서 언급했듯이 동일한 가정이 있습니다. 질문의 주요 코드에서 아마 설정되었습니다list 을 만드는 것과 같게 입니다 set(values). 그리고 혼란 스러웠습니다. 귀하의 답변은 다운 보트해서는 안됩니다. 그러나 그것은 또한 독자들을 사로 잡지 않고있다.
블라디미르 부 카낙
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.