Python 배열 정의 방법에 대한 자세한 소개

高洛峰
풀어 주다: 2017-03-06 14:01:49
원래의
2109명이 탐색했습니다.

이 문서의 예에서는 Python 배열 정의 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

Python에는 배열에 대한 데이터 구조가 없지만 목록은 다음과 같이 배열과 매우 유사합니다.

a=[0,1,2]
로그인 후 복사

현재: a[0]=0, a[1]=1, a[[2]=2, 그러나 이는 다음과 같은 질문을 제기합니다. a = range(0, 1000)를 통해 구현이 가능합니다. 또는 a = range(1000)로 생략합니다. 길이가 1000인 a를 정의하고 초기 값이 모두 0인 경우 a = [0 for x in range(0, 1000)]

다음은 2차원 배열 정의:

직접 정의:

a=[[1,1],[1,1]]
로그인 후 복사

이는 2*2 2차원 배열을 정의합니다. 초기값이 0인 배열입니다.

간접 정의:

a=[[0 for x in range(10)] for y in range(10)]
로그인 후 복사

초기값이 0인 10*10 2차원 배열을 정의합니다.

더 간단한 리터럴 2차원 배열 방법도 있습니다.

b = [[0]*10]*10
로그인 후 복사

초기값을 사용하여 10*10 2차원 배열을 정의합니다. 0.

a=[[0 for x in range(10)] for y in range(10)]와 비교: print a==b의 결과는 True입니다.

그런데 a 대신 b의 정의 방법을 사용한 후, 이전에는 정상적으로 실행될 수 있었던 프로그램도 주의 깊게 분석한 결과 차이점이 발견되었습니다.

a[0][0 ]=1 , a[0][0] 만 1이고 나머지는 모두 0입니다.

b[0][0]=1일 때 a[0][0], a[1][0], a[9,0]까지는 모두 1입니다.

이를 통해 큰 배열에 포함된 10개의 작은 1차원 데이터가 모두 동일한 참조, 즉 동일한 주소를 가리킨다는 것을 알 수 있습니다.
그래서 b = [[0]*10]*10은 기존의 2차원 배열을 따르지 않습니다.

동시에 테스트되었습니다. c=[0]*10 정의는 c=[0 for x in range(10)]와 동일한 효과를 가지며 동일한 문제는 없습니다. 위의 reference는 배열 c의 정의로 추정되는데, 이때 값 유형을 곱한 반면, 이전 b에서는 1차원 배열이 참조이므로(값 유형과 참조 유형을 빌려옴) 유형을 곱한 것으로 추정됩니다. C#에서는 이것이 적절한지 모르겠습니다).

파이썬 배열 정의 방법에 대한 자세한 소개와 관련 글은 PHP 중국어 홈페이지를 주목해주세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!