파이썬 | 2D 배열/목록을 올바른 방법으로 사용

| | | | | |

방법 1a


# 1D 배열을 만드는 첫 번째 방법

<코드 클래스 = "일반"> N <코드 클래스 = "키워드"> = <코드 클래스 = "값"> 5

< 코드 클래스="일반"> arr <코드 클래스 ="키워드 "> = <코드 클래스 ="일반 "> [ <코드 클래스 ="값 "> 0 <코드 클래스 = "일반">] <코드 클래스 = "키워드"> * <코드 클래스 = "일반"> N

<코드 클래스 = "functions"> 인쇄 (arr)

출력:

[0, 0, 0, 0, 0] 

방법 1b

<코드 클래스 = "comments"> # 배열 1 D를 생성하는 두 번째 방법

N = <코드 클래스 = "값"> 5

<코드 클래스 = "일반"> arr <코드 클래스 = "키워드"> = <코드 클래스 = "일반"> [ 0 나는 범위 (N)]

인쇄 (arr)

종료:

[0, 0, 0, 0, 0 ] 

위를 확장하여 2차원 배열을 정의할 수 있습니다. 다음 방법으로.
방법 2a


# 위의 첫 번째 방법을 사용하여
# 2D 배열

행, 열 = <코드 클래스 = "일반"> ( <코드 클래스 = "값"> 5 <코드 클래스 = "일반">, <코드 클래스 = "값" > 5 <코드 클래스 = "일반">)

<코드 클래스 = "일반"> arr <코드 클래스 = "키워드"> = <코드 클래스 ="일반"> [[ <코드 클래스 ="값 "> 0 <코드 클래스 ="일반 ">] <코드 클래스 ="키워드 "> * <코드 클래스 = "일반"> 열] <코드 클래스 = "키워드"> * <코드 클래스 = "일반"> 행

< 코드 클래스 = "functions "> 인쇄 (arr)

종료:

<사전>[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

방법 2b


<코드 클래스 = " comment"> # 위의 두 번째 방법을 사용하여
# 2D 배열

행 생성, 열 <코드 클래스 = "키워드"> = <코드 클래스 = "일반"> ( <코드 클래스 = "값"> 5 <코드 클래스 = "일반 ">, <코드 클래스 = "값"> 5 <코드 클래스 = "일반">)

<코드 클래스 = "일반"> arr < /코드> <코드 클래스 = "키워드"> = <코드 클래스 = "일반"> [[ <코드 클래스 = "값"> 0 <코드 클래스 = "키워드" > 나는 범위 (cols)] for j 범위 (행)]

인쇄 (arr)

출력:

<사전>[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0 , 0, 0], [0, 0, 0, 0, 0]]

두 방법 모두 지금과 같은 결과를 보이는 것 같습니다. 메소드 2a와 메소드 2b의 배열에 있는 요소 중 하나를 교체합시다.


# 작동 방식을 보여주는 Python 3 프로그램
# 방법 1 및 방법 2.

<코드 클래스 ="일반 "> 행, 열 <코드 클래스 = "키워드"> = <코드 클래스 = "일반"> ( <코드 클래스 = "값"> 5 <코드 클래스="일반">, <코드 클래스 ="값 "> 5 <코드 클래스 ="일반 ">)


# 메소드 2a

arr <코드 클래스 = "키워드" > = <코드 클래스 = "일반"> [[ <코드 클래스 = "값"> 0 <코드 클래스 = "일반">] <코드 클래스 = "키워드"> * <코드 클래스 = "일반"> 열] <코드 클래스 = "키워드"> * <코드 클래스 = "일반 "> 행


# 첫 번째 행 변경 element
# 첫 번째 줄을 1로 만들고 배열을 인쇄합니다.

arr [ <코드 클래스 ="값 "> 0 <코드 클래스 ="일반 ">] [ <코드 클래스 ="값 "> 0 <코드 클래스 = "일반">] = 1

arr:

인쇄 (행)

# 다음을 출력합니다.
# [1, 0, 0, 0, 0]
# [1, 0, 0, 0, 0]
# [1, 0, 0, 0, 0]
<코드 클래스 = "코멘트"> # [1, 0, 0, 0, 0]
<코드 클래스 = "코멘트"> # [1, 0, 0, 0, 0]


# 메소드 2b

<코드 클래스 = "일반"> arr <코드 클래스 = "키워드"> = <코드 클래스 = "일반"> [[ 0 for i in 범위 (cols)] for j 범위 (행)]


# 이 새 배열로 돌아가서 변경할 수 있습니다.
# 첫 번째 행의 첫 번째 요소
#을 1로 변환하고 배열을 인쇄합니다.

arr [ 0 <코드 클래스 = "일반">] [ <코드 클래스 = "값"> 0 <코드 클래스 = "일반">] < 코드 클래스 = "키워드"> = <코드 클래스 = "값"> 1

<코드 클래스 = "keyw ord "> arr:

<코드 클래스 = "키워드"> 인쇄 <코드 클래스 = "일반"> (행)


<코드 클래스 = "comments"> # 예상대로 다음을 출력합니다.
# [1, 0, 0, 0, 0]
# [0, 0, 0, 0, 0]
# [0, 0, 0, 0, 0]
# [0, 0, 0, 0, 0]
# [0, 0, 0, 0, 0]

종료:

[1, 0, 0, 0, 0] [1, 0, 0, 0, 0] [1 , 0, 0, 0, 0] [1, 0, 0, 0, 0] [1, 0, 0, 0, 0] [1, 0, 0, 0, 0] [0, 0, 0, 0 , 0] [ 0, 0, 0, 0, 0] [0, 0, 0, 0, 0] [0, 0, 0, 0, 0] 

다음의 첫 번째 요소만 예상합니다. 첫 번째 줄은 1로 변경되지만 각 줄의 첫 번째 요소는 메서드 2a에서 1로 변경됩니다. 이러한 종류의 기능은 Python이 얕은 목록을 사용한다는 사실에 기인하며, 우리는 이를 이해하려고 노력할 것입니다.

방법 1a에서 Python은 5개의 정수 객체를 생성하지 않고 하나의 정수 객체만 생성하고 모든 arr 배열의 인덱스는 표시된 것과 동일한 int 개체를 가리킵니다.


0번째 인덱스를 다른 정수(예: 1)에 할당하면 값이 1인 새 정수 개체가 생성되고 다음과 같이 0번째 인덱스가 이 새로운 int 개체를 가리킵니다.

마찬가지로 "와 같은 2차원 배열을 생성할 때" "rr = [[0] * cols] * row " , 우리는 실제로 위의 비유를 확장하고 있습니다.
1. 하나의 정수 개체만 생성됩니다.
2. 하나의 목록 1d가 생성되고 모든 인덱스가 1번 지점에서 동일한 int 개체를 가리킵니다.
3. 이제 ar [0], ar [1], ar [2] ¶¶. arr [n-1] 모두 위의 2단계에서 동일한 목록 개체를 가리킵니다.

위 설정은 아래 이미지에서 시각화할 수 있습니다.

이제 첫 번째 줄의 첫 번째 요소를 변경해 보겠습니다." arr "as
arr [0] [0] = 1

=" arr [0]은 위에서 생성한 것과 동일한 목록 객체를 가리킵니다(arr [1], arr [2]‚Ķ arr [n-1]도 동일한 목록 객체를 가리킴)
= & gt ; arr [0] [0]을 할당하면 값이 1인 새로운 int 객체가 생성되고 arr [0] [0]은 이제 이 새로운 int 객체를 가리킬 것입니다. (따라서 arr [1] [0], arr [2] [0]‚Ķ arr [n-1] [0])

아래 이미지에서 명확하게 볼 수 있습니다. .


이러한 방식으로 2차원 배열을 생성하면 기본적으로 하나의 정수 개체와 배열의 모든 행에서 참조하는 단 하나의 목록 개체가 있기 때문에 특정 줄의 값은 모든 문자열에 영향을 미칩니다.

예상대로 추적합니다. 얕은 목록을 사용하여 발생하는 오류. 복잡한. 따라서 2차원 배열을 선언하는 가장 좋은 방법은


rows, cols =

입니다. 코드> <코드 클래스 ="일반"> ( <코드 클래스 ="값 "> 5 <코드 클래스 ="일반 ">, <코드 클래스 ="값 "> 5 <코드 클래스 = "일반">)

<코드 클래스 = "일반"> arr <코드 클래스 = "키워드"> = [[ 0 for 나는 범위 (cols)] j 에 대한 keyword"> 범위 (rows)]

종료:

 

이 방법은 다음을 생성합니다. 방법 2a와 달리 5개의 개별 목록 개체. 이를 확인하는 한 가지 방법은 — 두 피연산자가 동일한 객체를 참조하는지 확인하는 "is" 연산자를 사용합니다.


행, 열 = ( <코드 클래스 ="값 "> 5 <코드 클래스 ="일반 ">, <코드 클래스 = "값"> 5 <코드 클래스 = "일반 ">)

# 메소드 2b

arr < 코드 클래스 = "키워드"> = <코드 클래스 = "일반"> [[ <코드 클래스 = "값"> 0 <코드 클래스 = "키워드"> 나는 범위 ( cols)] for j 범위 (행)]


# arr [0] 및 arr [1]이
# 동일한 객체를 참조하는지 확인

인쇄 (arr [ 0 ] arr [ 1 ] ) # False 출력


# 메소드 2a

<코드 클래스 ="일반 "> arr <코드 클래스 ="키워드 "> = <코드 클래스 ="일반 "> [[ <코드 클래스 = "값"> 0 <코드 클래스 = "일반">] <코드 클래스 = "키워드"> * <코드 클래스="일반"> 열] *


# arr [0] 및 arr [1]이
# 해당 sam을 참조하는지 확인 e object
# 생성할 개체 목록이 하나만 있으므로 True를 출력합니다.
# 생성할 개체 목록입니다.
# 생성할 개체 목록 code>

인쇄 (arr [ 0 ] arr [ 1 ])

종료:

거짓 참 

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method