[python] 파이썬에서 목록 항목 세트를 구성하는 방법은 무엇입니까?

나는이 list파이썬에서 파일 이름을 내가는 구성 할 것입니다 set모든 파일 이름의 아웃.

filelist=[]
for filename in filelist:
    set(filename)

이것은 작동하지 않는 것 같습니다. 어떻게 할 수 있습니까?



답변

해시 가능한 객체 목록이있는 경우 (파일 이름은 문자열 일 수 있으므로 계산해야합니다) :

lst = ['foo.py', 'bar.py', 'baz.py', 'qux.py', Ellipsis]

세트를 직접 구성 할 수 있습니다.

s = set(lst)

사실, 반복 가능한 객체로set 이런 식으로 작동 합니다! (오리는 타이핑을 잘하지 않습니까?)


반복적으로 수행하려면 다음을 수행하십시오.

s = set()
for item in iterable:
    s.add(item)

그러나 이런 식으로 할 필요는 거의 없습니다. 이 set.add방법은 매우 유용 하기 때문에 언급 만합니다.


답변

가장 직접적인 해결책은 다음과 같습니다.

 s = set(filelist)

원래 코드의 문제는 값이 set 에 할당되지 않았다는 것 입니다 . 다음은 코드의 수정 버전입니다.

 s = set()
 for filename in filelist:
     s.add(filename)
 print(s)


답변

넌 할 수있어

my_set = set(my_list)

또는 Python 3의 경우

my_set = {*my_list}

목록에서 세트를 작성합니다. 반대로, 당신은 또한 할 수 있습니다

my_list = list(my_set)

또는 Python 3의 경우

my_list = [*my_set]

세트에서 목록을 작성합니다.

집합이 본질적으로 정렬되지 않기 때문에 목록을 집합으로 변환 할 때 목록의 요소 순서는 일반적으로 손실됩니다. (CPython의 한 가지 예외는 목록이 음이 아닌 정수로만 구성된 경우 인 것 같습니다. 그러나 이것이 CPython의 세트 구현의 결과이고이 동작이 다른 Python 구현마다 다를 수 있다고 가정합니다.)


답변

또 다른 해결책은 다음과 같습니다.

>>>list1=["C:\\","D:\\","E:\\","C:\\"]
>>>set1=set(list1)
>>>set1
set(['E:\\', 'D:\\', 'C:\\'])

이 코드에서는 set 메소드를 사용하여 set으로 바꾸고 목록에서 모든 중복 값을 제거했습니다.


답변

다음과 같이 반복적 인 방식으로 세트를 구성하는 일반적인 방법은 다음과 같습니다.

aset = {e for e in alist}


답변

간단히 다음 줄을 넣으십시오.

new_list = set(your_list)


답변