파이썬 수집, 깊이를 복사

모음

세트 해시 소자 (불변 식)의 내부에 정렬되지 않은 고유 데이터 세트이지만 해시 자체 (이것은 사전 설정된 결합되지 않음)으로 설정되지 않는다. 다음은 가장 중요한 포인트의 모음입니다 :

  디엠 퍼시스가, 목록이 수집되고, 자동으로 무거운 이동합니다.

  관계 테스트, 테스트 데이터, 가난, 노동 조합 및 기타 관계의 두 집합의 교집합 전에.

도 1을 참조하면, 모음을 생성한다.

SET1 = 집합 ({1,2, 배리 '}) 
SET2 = {1,2, 배리'} 
인쇄 (SET1, SET2) # {1, 2, 배리 '} {1, 2, 배리'}

도 2를 참조하면, 모음을 증가시킨다.

 SET1 = { "알렉스", "wusir ','ritian ','에곤 ','배리 '}
set1.add ( '보기 여신') 
인쇄 (SETL) 

#UPDATE : 반복 증가 
set1.update ( 'A') 
인쇄 (SETL) 
set1.update ( '교사') 
인쇄 (SETL) 
. set1.update ([1, 2, 3) 
인쇄 (SET1)

3, 컬렉션을 삭제합니다.

 
= {SETL '알렉스', 'wusir은', 'ritian은', '에곤은', '배리'} 

set1.remove ( '알렉스') #은 요소의 제거 
인쇄 (SETL) 

set1.pop () #은 임의의 요소 삭제 
인쇄 (SET1) 

set1.clear ()의 # 빈 세트 
인쇄 (SET1)를 

델 SET1 번호 수집 삭제 
인쇄 (SET1를)

동작 4, 다른 세트 :

  4.1 교차. (또는 교차)

SET1 = {1,2,3,4,5} 
SET2 = {4,5,6,7,8} 
인쇄 (SET1 & SET2) # {4,5} 
인쇄 (set1.intersection (SET2)) {# 4 5}

  4.2 조합. (| 또는 조합)

SET1 = {1,2,3,4,5} 
SET2 = {4,5,6,7,8} 
인쇄 (SET1 | SET2) # {1, 2, 3, 4, 5, 6, 7, 8} 

인쇄 (set2.union (SET1)) # {1, 2, 3, 4, 5, 6, 7, 8}

  차이는 4.3으로 설정. (- 또는 차)

SET1 = {1,2,3,4,5} 
SET2 = {4,5,6,7,8} 
인쇄 (SET1 - SET2) # {1, 2, 3} 
인쇄 (set1.difference (SET2)) # {1, 2, 3}

   4.4 안티 교차로. (^ 또는의 symmetric_difference)

SET1 = {1,2,3,4,5} 
SET2 = {4,5,6,7,8} 
인쇄 (SET1 ^ SET2) # {1, 2, 3, 6, 7, 8} 
인쇄 (SET1. symmetric_difference (SET2)) {# 1, 2, 3, 6, 7, 8}

  4.5 서브셋 수퍼

 
L은 2,3- = {} SET1 
SET2 = {1,2,3,4,5,6} 

인쇄 (SET1 <SET2) 
인쇄 (set1.issubset (SET2)) # 1 개의 동일한 기재되어있다 SET1 설정 2 부분 집합. 

인쇄 (SET2> SET1) 
인쇄 (set2.issuperset (SET1)) # 개의 동일한, 설명 SET1 SET2가 상위이다.

5 불변 모음 frozenset 때문에 내용물 불변 종류가된다.

S = frozenset (배리 ') 
인쇄 (S, 입력 (들))의 # frozenset ({'A ','Y ','B ','R '}) <클래스'frozenset '>

 둘째, 깊이를 복사

1, 할당 연산자 봐.

L1 = [1,2,3 [배리 ','알렉스 '] 
L2 = L1 

L1 [0] = 111 
인쇄 (L1) # [111, 2, 3, [배리', '알렉스'] 
인쇄 (L2) # [111, 2, 3, [배리 ','알렉스 '] 

(L1) [3] [0] = "wusir" 
인쇄 (L1) # [111, 2, 3, ['wusir ' 알렉스 '] 
인쇄 (L2) # [111, 2, 3, ['wusir ','알렉스 ']

할당 연산자는 동일한 메모리 주소로, L1과 L2 점, 그래서 그들은 정확히 동일 들어.

2, 얕은 복사 사본.

L1 = [1,2,3 [배리 ','알렉스 ']
 
L2 = l1.copy () 인쇄 (L1, ID (L1)) # [1, 2, 3, [배리', '알렉스 '] 2,380,296,895,816 인쇄 (L2, ID (L2)) # [1, 2, 3, [배리', '알렉스'] 2,380,296,895,048
L1 [1] = 222 
인쇄 (L1, ID (L1)) # [1, 222, 3, [배리 ','알렉스 '] 2,593,038,941,128
인쇄 (L2, ID (L2)) # [1,2,3 [배리 ','알렉스 '] 2,593,038,941,896
 
L1 [3] [0] = "wusir" 인쇄 (L1, ID (L1 [3])) # [1, 2, 3, [ 'wusir', '알렉스'] 1,732,315,659,016 인쇄 (L2, ID (L2 [ 3])) # [1, 2, 3, [ 'wusir', '알렉스'] 1,732,315,659,016

얕은 사본 새로운 메모리 어드레스를 생성하는 제 1 층은, 처음부터 제 층 중에, 상기 제 층과 깊은 층의 일관성을 위해, 동일한 메모리 어드레스에 대한 포인트이므로 .

3, 깊은 복사 deepcopy.

수입 복사 
L1 = [1,2,3 [배리 ','알렉스 '] 
L2 = copy.deepcopy (L1) 

인쇄 (L1, ID (L1)) # [1, 2, 3, [배리' '알렉스'] 2,915,377,167,816 
인쇄 (L2, ID (L2)) # [1, 2, 3, [배리 ','알렉스 '] 2,915,377,167,048 

L1 [1] = 222 
인쇄 (L1, ID (L1)) # [1, 222, 3, [배리 ','알렉스 '] 2,915,377,167,816 
인쇄 (L2, ID (L2)) # [1, 2, 3, [배리', '알렉스'] 2,915,377,167,048 

L1 [3 ] [0] = "wusir" 
인쇄 (L1, ID (L1 [3])) #의 [1, 222, 3, [ 'wusir', '알렉스'] 2,915,377,167,240 
인쇄 (L2, ID (L2 [3]) ) # [1, 2, 3, [배리 ','알렉스 '] 2,915,377,167,304

전체 복사를 들어, 두 개의 완전히 분리되어, (아무리 많은 레이어), 다른 하나는 절대적으로 변경되지 않습니다 중 하나의 요소를 변경하지 않습니다.

세트 해시 소자 (불변 식)의 내부에 정렬되지 않은 고유 데이터 세트이지만 해시 자체 (이것은 사전 설정된 결합되지 않음)으로 설정되지 않는다. 다음은 가장 중요한 포인트의 모음입니다 :

  디엠 퍼시스가, 목록이 수집되고, 자동으로 무거운 이동합니다.

  관계 테스트, 테스트 데이터, 가난, 노동 조합 및 기타 관계의 두 집합의 교집합 전에.

도 1을 참조하면, 모음을 생성한다.

SET1 = 집합 ({1,2, 배리 '}) 
SET2 = {1,2, 배리'} 
인쇄 (SET1, SET2) # {1, 2, 배리 '} {1, 2, 배리'}

도 2를 참조하면, 모음을 증가시킨다.

 SET1 = { "알렉스", "wusir ','ritian ','에곤 ','배리 '}
set1.add ( '보기 여신') 
인쇄 (SETL) 

#UPDATE : 반복 증가 
set1.update ( 'A') 
인쇄 (SETL) 
set1.update ( '교사') 
인쇄 (SETL) 
. set1.update ([1, 2, 3) 
인쇄 (SET1)

3, 컬렉션을 삭제합니다.

 
= {SETL '알렉스', 'wusir은', 'ritian은', '에곤은', '배리'} 

set1.remove ( '알렉스') #은 요소의 제거 
인쇄 (SETL) 

set1.pop () #은 임의의 요소 삭제 
인쇄 (SET1) 

set1.clear ()의 # 빈 세트 
인쇄 (SET1)를 

델 SET1 번호 수집 삭제 
인쇄 (SET1를)

동작 4, 다른 세트 :

  4.1 교차. (또는 교차)

SET1 = {1,2,3,4,5} 
SET2 = {4,5,6,7,8} 
인쇄 (SET1 & SET2) # {4,5} 
인쇄 (set1.intersection (SET2)) {# 4 5}

  4.2 조합. (| 또는 조합)

SET1 = {1,2,3,4,5} 
SET2 = {4,5,6,7,8} 
인쇄 (SET1 | SET2) # {1, 2, 3, 4, 5, 6, 7, 8} 

인쇄 (set2.union (SET1)) # {1, 2, 3, 4, 5, 6, 7, 8}

  차이는 4.3으로 설정. (- 또는 차)

SET1 = {1,2,3,4,5} 
SET2 = {4,5,6,7,8} 
인쇄 (SET1 - SET2) # {1, 2, 3} 
인쇄 (set1.difference (SET2)) # {1, 2, 3}

   4.4 안티 교차로. (^ 또는의 symmetric_difference)

SET1 = {1,2,3,4,5} 
SET2 = {4,5,6,7,8} 
인쇄 (SET1 ^ SET2) # {1, 2, 3, 6, 7, 8} 
인쇄 (SET1. symmetric_difference (SET2)) {# 1, 2, 3, 6, 7, 8}

  4.5 서브셋 수퍼

 
L은 2,3- = {} SET1 
SET2 = {1,2,3,4,5,6} 

인쇄 (SET1 <SET2) 
인쇄 (set1.issubset (SET2)) # 1 개의 동일한 기재되어있다 SET1 설정 2 부분 집합. 

인쇄 (SET2> SET1) 
인쇄 (set2.issuperset (SET1)) # 개의 동일한, 설명 SET1 SET2가 상위이다.

5 불변 모음 frozenset 때문에 내용물 불변 종류가된다.

S = frozenset (배리 ') 
인쇄 (S, 입력 (들))의 # frozenset ({'A ','Y ','B ','R '}) <클래스'frozenset '>

 둘째, 깊이를 복사

1, 할당 연산자 봐.

L1 = [1,2,3 [배리 ','알렉스 '] 
L2 = L1 

L1 [0] = 111 
인쇄 (L1) # [111, 2, 3, [배리', '알렉스'] 
인쇄 (L2) # [111, 2, 3, [배리 ','알렉스 '] 

(L1) [3] [0] = "wusir" 
인쇄 (L1) # [111, 2, 3, ['wusir ' 알렉스 '] 
인쇄 (L2) # [111, 2, 3, ['wusir ','알렉스 ']

할당 연산자는 동일한 메모리 주소로, L1과 L2 점, 그래서 그들은 정확히 동일 들어.

2, 얕은 복사 사본.

L1 = [1,2,3 [배리 ','알렉스 ']
 
L2 = l1.copy () 인쇄 (L1, ID (L1)) # [1, 2, 3, [배리', '알렉스 '] 2,380,296,895,816 인쇄 (L2, ID (L2)) # [1, 2, 3, [배리', '알렉스'] 2,380,296,895,048
L1 [1] = 222 
인쇄 (L1, ID (L1)) # [1, 222, 3, [배리 ','알렉스 '] 2,593,038,941,128
인쇄 (L2, ID (L2)) # [1,2,3 [배리 ','알렉스 '] 2,593,038,941,896
 
L1 [3] [0] = "wusir" 인쇄 (L1, ID (L1 [3])) # [1, 2, 3, [ 'wusir', '알렉스'] 1,732,315,659,016 인쇄 (L2, ID (L2 [ 3])) # [1, 2, 3, [ 'wusir', '알렉스'] 1,732,315,659,016

얕은 사본 새로운 메모리 어드레스를 생성하는 제 1 층은, 처음부터 제 층 중에, 상기 제 층과 깊은 층의 일관성을 위해, 동일한 메모리 어드레스에 대한 포인트이므로 .

3, 깊은 복사 deepcopy.

수입 복사 
L1 = [1,2,3 [배리 ','알렉스 '] 
L2 = copy.deepcopy (L1) 

인쇄 (L1, ID (L1)) # [1, 2, 3, [배리' '알렉스'] 2,915,377,167,816 
인쇄 (L2, ID (L2)) # [1, 2, 3, [배리 ','알렉스 '] 2,915,377,167,048 

L1 [1] = 222 
인쇄 (L1, ID (L1)) # [1, 222, 3, [배리 ','알렉스 '] 2,915,377,167,816 
인쇄 (L2, ID (L2)) # [1, 2, 3, [배리', '알렉스'] 2,915,377,167,048 

L1 [3 ] [0] = "wusir" 
인쇄 (L1, ID (L1 [3])) #의 [1, 222, 3, [ 'wusir', '알렉스'] 2,915,377,167,240 
인쇄 (L2, ID (L2 [3]) ) # [1, 2, 3, [배리 ','알렉스 '] 2,915,377,167,304

전체 복사를 들어, 두 개의 완전히 분리되어, (아무리 많은 레이어), 다른 하나는 절대적으로 변경되지 않습니다 중 하나의 요소를 변경하지 않습니다.

추천

출처www.cnblogs.com/chenzxl/p/10988330.html