programing

python에서 목록 항목 집합을 구성하는 방법은 무엇입니까?

goodcopy 2022. 10. 8. 22:58
반응형

python에서 목록 항목 집합을 구성하는 방법은 무엇입니까?

나는 가지고 있다listpython의 파일 이름을 만들 수 있습니다.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)

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

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 메서드를 사용하여 세트로 변환한 후 목록에서 모든 중복 값을 제거했습니다.

간단히 말하면 다음과 같습니다.

new_list = set(your_list)

다음과 같은 반복적인 방법으로 세트를 구성하는 일반적인 방법 중 하나입니다.

aset = {e for e in alist}

목록 이해를 사용하여 세트를 작성할 수도 있습니다.

s = {i for i in range(5)}

위의 답변은 모두 맞지만 목록의 순서를 유지하려면 다음과 같이 진행해야 합니다.

list(dict.fromkeys(your_list))

언급URL : https://stackoverflow.com/questions/15768757/how-to-construct-a-set-out-of-list-items-in-python

반응형