반응형
세트에 단일 값을 추가하려는 경우 Python에서 추가 및 업데이트 작업의 차이점은 무엇입니까?
a = set()
a.update([1]) #works
a.add(1) #works
a.update([1,2])#works
a.add([1,2])#fails
누군가 이것이 왜 그렇게 설명 할 수 있습니까?
해결 방법
set.add
는 집합에 개별 요소를 추가합니다. 그래서,
>>> a = set()
>>> a.add(1)
>>> a
set([1])
작동하지만 해시 가능하지 않는 한 iterable과 함께 작동하지 않습니다. 이것이 a.add ([1, 2])
가 실패하는 이유입니다.
>>> a.add([1, 2])
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> a.update(1)
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'int' object is not iterable
그러나 다음은 목록 [1]
이 반복되고 목록의 요소가 세트에 추가되기 때문에 작동합니다.
>>> a.update([1])
>>> a
set([1])
set.update
는 기본적으로 내부 집합 통합 작업과 동일합니다. 다음과 같은 경우를 고려하십시오.
>>> set([1, 2]) | set([3, 4]) | set([1, 3])
set([1, 2, 3, 4])
>>> set([1, 2]) | set(range(3, 5)) | set(i for i in range(1, 5) if i % 2 == 1)
set([1, 2, 3, 4])
여기에서 모든 이터 러블을 집합으로 명시 적으로 변환 한 다음 합집합을 찾습니다. 여러 개의 중간 집합과 공용체가 있습니다. 이 경우 set.update
는 좋은 도우미 함수 역할을합니다. iterable을 받아들이 기 때문에 간단히 할 수 있습니다.
>>> a.update([1, 2], range(3, 5), (i for i in range(1, 5) if i % 2 == 1))
>>> a
set([1, 2, 3, 4])
참조 페이지 https://stackoverflow.com/questions/28845284
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python의 ElementTree를 XML 파일로 예쁜 인쇄하려면 어떻게해야합니까? (0) | 2020.11.28 |
---|---|
파이썬 Check if any item in Python list is None (but include zero) (0) | 2020.11.28 |
파이썬 How to delete the current row in pandas dataframe during df.iterrows() (0) | 2020.11.28 |
파이썬 'module' has no attribute 'urlencode' (0) | 2020.11.28 |
파이썬 PDF 위에 이미지 배치 (0) | 2020.11.28 |
댓글