python에서 [0]*2와 0*2의 차이점 설명
프로그램 용례:
a=[[1,2],[4,5]]
b=[0]*len(a)
d=0*len(a)
print("len(a)=",len(a))
print("b=",b)
print("d=",d)
print(2*[1,2])
print([1,2]*2)
출력은 다음과 같습니다.len(a)= 2
b= [0, 0]
d= 0
[1, 2, 1, 2]
[1, 2, 1, 2]
행렬 뒤에 있는 한 개의 수는 그것을 몇 번 복제하는 것과 같다는 것을 알 수 있다.
보충: 2차원 그룹 만들기 및python에서 [0]*n과 [0 for_ inrange(n)]의 차이와 연계
1. 심층 복사본으로 얕게 복사
직접 부여: 사실은 대상의 인용 (별명) 입니다.
얕은 복사(copy): 부모 대상을 복사하고 대상의 내부 하위 대상을 복사하지 않습니다.
딥 복사(deepcopy):copy 모듈의 딥 복사 방법은 부모 대상과 하위 대상을 완전히 복사합니다.
구별
[0]*n은 얕은 복사, 즉 하나의 목록을 n회 반복한 것이다. 예=호 복사(얕은 복사가 아니라 = 얕은 복사의list id와 다르다는 것을 주의).[[0]*n]*m 이런 식으로 [0]*n을 m번 복사했어요.
[0 for _ in range(n)] 생성, 딥 카피
n = 4
dp1 = [0] * n
dp2 = [0 for _ in range(n) ]
print('dp1:',dp1)
print('dp2:',dp2)
이 두 사람의 효과는 같다dp1: [0, 0, 0, 0]
dp2: [0, 0, 0, 0]
3*4의 행렬을 생성하는 2차원 배열, 요소가 모두 0이고 수정(0,2)된 요소의 값이 3이면 다음과 같은 세 가지 방법을 제공합니다.
m,n = 3,4
dp1 = [[0] * n ] * m
dp2 = [[0 for _ in range(n) ] for _ in range(m)]
dp3 = [[0] * n for _ in range(m)]
dp1[0][2] = 3
dp2[0][2] = 3
dp3[0][2] = 3
print('dp1:',dp1)
print('dp2:',dp2)
print('dp2:',dp3)
결과는 다음과 같습니다.dp1: [[0, 0, 3, 0], [0, 0, 3, 0], [0, 0, 3, 0]]
dp2: [[0, 0, 3, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
dp2: [[0, 0, 3, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
첫 번째 방법은 안 돼요. 줄마다 다른 줄이 바뀌어요.
두 번째, 세 번째 방법은 모두 가능하다
이상의 개인적인 경험으로 여러분께 참고가 되었으면 좋겠습니다. 또한 많은 응원 부탁드립니다.만약 잘못이 있거나 완전한 부분을 고려하지 않으신다면 아낌없이 가르침을 주시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.