데이터 저장

플레이어가 복잡하고 친근하지 않은 컴퓨터 인터페이스와 경쟁하는 "User Hostile"이라는 컴퓨터 게임을 개발했다고 가정해 보겠습니다. 이제 5년 동안 이 게임의 월별 판매를 추적하는 프로그램을 작성해야 합니다. 또는 Hacker Hero 트레이딩 카드의 인벤토리가 필요하다고 가정해 보겠습니다.
곧 정보를 저장하고 처리하기 위해 단순한 기본 데이터 유형 이상이 필요하다는 결론에 도달하게 될 것입니다.
 

목록(배열)

많은 양의 데이터로 작업하기 편리하도록 셀 그룹에 공통 이름이 지정됩니다. 이러한 셀 그룹을 배열이라고 합니다.
 
배열 – 나란히 위치하고 공통 이름을 갖는 동일한 유형의 메모리 셀 그룹입니다. 그룹의 각 셀에는 고유 번호가 있습니다.

배열로 작업할 때 세 가지 작업을 해결하는 방법을 배워야 합니다.
엑스 어레이에 필요한 크기의 메모리를 할당합니다.
엑스 원하는 셀에 데이터 쓰기
엑스 셀에서 데이터를 읽습니다.

 

Python의 배열

Python에는 그러한 배열이 없습니다. 대신, 목록은 동일한 유형의 개체 그룹(동일한 유형일 뿐만 아니라), 즉 목록 유형의 개체 그룹을 저장하는 데 사용됩니다. 목록과 배열의 차이점은 목록은 메모리 관리 작업(컴파일러에서 수행)을 고려하지 않고 프로그램 실행(요소 삭제, 추가) 중에 크기를 변경할 수 있는 동적 구조라는 것입니다.
앞으로 목록 작업을 분석할 때 "배열"이라는 단어를 사용할 것입니다. 대부분의 경우 목록이 배열의 역할에 정확하게 사용되기 때문입니다(동일한 유형의 데이터를 저장함).
 
배열 만들기
배열이 생성되면 메모리에 공간이 할당됩니다(특정 개수의 셀). 1) 단순히 요소를 열거하여 배열을 만들 수 있습니다. A = [1, 4, 7, 12, 5] 인쇄(유형(A)) 프로그램은
<클래스 '목록>
즉, 배열은 list (영어 list에서 번역됨) 유형의 개체입니다.

2) 배열은 정수 또는 실수, 문자열 등 모든 유형의 데이터로 구성될 수 있습니다.  A = ["Vasya", "Petya", "Fedya"]

배열을 사용하는 몇 가지 방법
3) 배열을 "추가"할 수 있습니다. A = [1, 5] + [25, 7]
4) 동일한 배열의 추가는 곱셈으로 대체될 수 있습니다. 따라서 다음과 같이 동일한 값으로 채워진 배열을 쉽게 만들 수 있습니다. A = [0]*10 # 10개의 요소로 구성된 배열을 만들고 0으로 채움
5) 배열은 항상 "인식"합니다. 너의 사이즈.  len() 함수는 배열의 크기를 결정하는 데 사용됩니다. 종종 배열의 크기는 별도의 변수에 저장되므로 다른 배열 크기로 작업하도록 프로그램을 쉽게 변경할 수 있습니다.

N = 10 # 배열의 크기를 변수 N에 저장 A = [0] * N # 크기 N의 배열 생성 print(len(A)) # 배열의 크기를 출력합니다. 배열의 크기는 키보드에서 설정할 수 있습니다.

배열 요소 작업

배열의 유용성 대부분은 해당 요소에 개별적으로 액세스할 수 있다는 사실에서 비롯됩니다.
이렇게 하는 방법은 색인을 사용하여 요소에 번호를 매기는 것입니다.
 
인덱스는 특정 배열 요소를 가리키는 값입니다.
<사업부 스타일="텍스트 정렬:센터">

배열의 요소를 참조하려면 배열의 이름과 대괄호 안에 색인을 지정해야 합니다. 예를 들어 A[1] = 100과 같이 인덱스 1의 배열 요소에 값 100을 쓸 수 있습니다.


기억해야 합니다!
파이썬의 배열 번호 매기기는 0부터 시작합니다!
(이것은 전제 조건입니다. 처음부터 시작해야 합니다. 이것은 특히 기억해야 할 중요합니다.)
 
예시
x = (A[3] + 5) * A[1] # A[3] 및 A[1]의 값을 읽습니다. A[0] = x + 6 # A[0]에 새 값 쓰기
배열 요소 작업을 위한 프로그램을 분석해 봅시다. <예비> 나는 = 1 A = [0] * 5 # 5개 요소의 배열을 만듭니다. A[0] = 23 # 5개의 배열 요소(인덱스 0~4) 각각에 A[1] = 12 # 특정 값 쓰기 A[2] = 7 A[3] = 43 A[4] = 51 A[2] = A[i] + 2*A[i-1] + A[2*i] # 인덱스가 2인 요소의 값을 표현식의 결과로 변경 # i=1이므로 변수 i의 값을 우리가 얻은 표현식에 대입합니다. # 다음 식 A[2] = A[1] + 2*A[0] + A[2]; 인쇄(A[2] + A[4])
실행한 결과 이 프로그램은 인덱스 2와 인덱스 4가 116인 배열 요소의 합계 값을 화면에 표시합니다. 예제에서 볼 수 있듯이 배열의 모든 요소에 액세스할 수 있습니다. . 또한 다양한 공식을 사용하여 필요한 요소 번호를 계산합니다(예: 프로그램 A[i-1] 또는 A[2*i]에서와 같이). 이 경우 요소의 인덱스가 계산되고 i 값에 따라 달라집니다.

Python에서는 배열에 대해 음수 인덱스 값을 사용할 수 있으며 배열의 끝에서 계산할 수 있습니다. 예를 들어: A[-1] - 배열의 마지막 요소 A[-2] - 두 번째 요소 등

프로그램을 분석해 봅시다. N=5 A = [0] * N  x=1 print(A[x - 3])   # 요소 A[-2]에 액세스 print(A[x - 3 + len(A)]) # 액세스 요소 A[3]                       # 이것은  A[-2]와 같은 요소입니다. A[x + 4] = A[x] + A[2 * (x + 1)]  # 식과 계산에 x를 대입한 후                            # 다음 줄 얻기 A[5] = A[1] + A[4]                           # A[5] 그런 요소가 존재하지 않습니다                           # 오류 - 범위를 벗어난 배열 배열이 5개의 요소로 선언되었으므로 요소는 -5에서 4까지 번호가 매겨집니다. 6번째 줄에 있는 프로그램이 존재하지 않는 요소인 A[5]를 참조하는 것을 볼 수 있습니다.
프로그램이 배열의 범위를 넘어선 것으로 나타났습니다.
 

이러한 경우 프로그램은 일반적으로 런타임 오류와 함께 충돌합니다.

배열 요소 반복

배열로 작업할 때 일반적으로 배열의 모든 요소를 ​​한 번에 작업해야 합니다.
 
요소 반복: 배열의 모든 요소를 ​​반복하고 필요한 경우 일부 작업을 수행합니다.

이를 위해 0에서 N-1로 변경되는 변수가 있는 루프가 가장 자주 사용됩니다. 여기서 N은 배열의 개수입니다. 요소.
N에서 배열의 현재 크기, 즉  N = len(A)를 고려합니다. ... 범위(N)의 i에 대해: # 여기서는 A[i]로 작업합니다. ... 지정된 루프에서 변수 i0, 1, 2, ..., N-1 값을 갖습니다.  따라서 루프의 각 단계에서 숫자 i가 있는 배열의 특정 요소에 액세스합니다.
따라서 A[i] 배열의 한 요소로 수행해야 하는 작업을 설명하고 이러한 작업을 루프 안에 배치하는 것으로 충분합니다.

첫 번째 N 자연수로 배열을 채우는 프로그램을 작성해 보겠습니다. 즉, 프로그램이 끝나면 배열의 요소가 같아야 합니다. A[0] = 1 A[1] = 2 A[2] = 3 ... A[N - 1] = N 패턴을 보는 것은 쉽습니다: 배열 요소의 값은 요소의 인덱스보다 1만큼 커야 합니다.

루프는 다음과 같습니다 범위(N)의 i에 대해: A[i] = i + 1

목록 생성기

Python 언어를 사용하면 많은 문제를 간결하고 안정적으로 해결할 수 있습니다. 배열을 채울 수 있는 주요 가능성을 나열해 보겠습니다. 1) 배열 생성 및 채우기는 다음과 같이 작성할 수 있습니다. A = [i for i in range(N)] # N = 5, 배열 A = [0,1,2,3,4] A = [i*i for i in range(N)] # N = 5, 배열 A = [0,1,4,9,16] for i in range(N) - 0에서 N-1까지 모든 i 값을 반복합니다.

배열의 다음 요소는 for라는 단어 앞에 오는 값을 포함합니다. 첫 번째 경우에는 i이고 두 번째 경우에는 i*i.

다음 표기법을 사용하여 동일한 결과를 얻습니다. <예비> A = list(range(N)) # with N = 5, 배열 A = [0,1,2,3,4]
2) 모든 값이 아닌 특정 조건을 만족하는 값만 배열에 쓸 수 있습니다.
 
예시
0에서 9 범위의 모든 짝수로 배열을 채웁니다. A = [범위(10)에서 i에 대한 i i% 2 == 0인 경우] print(*A) # 배열 A = [0,2,4,6,8] 이 경우 배열의 길이가 10보다 작다는 것을 이해해야 합니다. 

3) 한 줄에 하나씩 있는 요소로 키보드에서 배열을 채우는 것은 두 가지 방법으로 수행할 수 있습니다.
  <몸>

4) 모두 같은 줄에 있는 요소로 키보드에서 배열을 채우는 것은 좀 더 복잡합니다. 문자열을 읽고 요소로 분할한 다음 각 요소를 정수로 변환해야 합니다. s = 입력().분할()  A = [int(i) for i in s]  그 쯤 A = list(map(int, input().split())) # 내장 함수 list()   # 시퀀스를 변환합니다.   # 가변 목록으로

배열 출력

다양한 방법으로 화면에 배열을 표시할 수도 있습니다.
 
N=5 A = [0]*5 범위(N)의 i에 대해: A[i] = int(입력()) <예비> A = [범위(N)의 i에 대한 정수(입력())] # 루프가 반복될 때마다 # 입력 문자열이 변환됩니다. # 정수로 (int 사용) # 그리고 이 숫자가 배열에 추가됩니다.
<몸>

많은 프로그래밍 언어에서 사용되는 표준 방식 이러한 주기는 더 짧게 작성할 수 있습니다. 루프의 각 단계에서 х 값은 배열의 다음 요소로 채워집니다. 파이썬에서는 이렇게 작성할 수 있습니다.
범위(len(A))의 i에 대해: print(A[i], end=" ") A의 x에 대해: print(x, end="" ") <예비> 인쇄(*A) # 기호 * 이름 앞에 배열의 #는 다음을 의미합니다. # 변환이 필요합니다 # 배열을 개별 값 집합으로