나는이 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)