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


170

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

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

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

답변:


322

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

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방법은 매우 유용 하기 때문에 언급 만합니다.


1
2.7을 사용하고 있는데 작동하지 않는 것 같습니다. 무슨 일이야? Python 2.7.13 (기본값, Jul 24 2017, 14:22:59) [GCC 4.2.1 호환되는 Apple LLVM 8.1.0 (clang-802.0.42)]의 darwin 유형 "help", "copyright", "credits" 자세한 내용은 "라이센스"를 참조하십시오. >>> x = [1,2,3] >>> set (x) set ([1, 2, 3]) >>>
opus111

@ user1902291-- 효과가있는 것 같습니다. 결과 집합을 추적해야합니다. y = set(x)
mgilson

또한 목록에서 세트의 항목을 추가하면 목록에서 중복 항목을 필터링 할 때 매우 유용 할 수 있습니다.
Pranjal Kumar

12

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

 s = set(filelist)

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

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

9

넌 할 수있어

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 구현마다 다를 수 있다고 가정합니다.)


4

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

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

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


1

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

aset = {e for e in alist}

0

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

new_list = set(your_list)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.