본문 바로가기

프로그래밍 언어/python

python 기초 - 배열1

1. 2차원 배열

1. 선언 및 초기화

array = [[0 for in range(가로길이,열)] for in range(세로길이,행)]

array = [[0]*(가로길이) for _ in range(세로길이)]

 

2. 입력받기

#한 줄 단위로 받기
array = []
for i in range(세로길이):    
	array.append(list(map(int, input().split())))


#한 값씩 받기
array = [0 for _ in range(세로길이)]
for i in range(세로길이):    
	array[i] = list(map(int, input().split()))
    
    
#선언과 동시에 입력받기
array = [list(map(int, input().split())) for _ in range(세로길이)]

#띄어쓰기 없는 입력값에 대해 배열 선언과 동시에 입력받기
array = [list(map(int, input())) for _ in range(n)] 

#선언 후 띄어쓰기 없는 입력값들 받기
array = [0 for _ in range]
for i in range(N):
	board[i] = list(map(int,input())

#한 줄 단위로 입력받기

 1차원 배열로 array 선언 -> append()를 이용해서 줄 단위로 리스트 원소 추가

 

#한 값씩 받기

for문을 통해 한 줄씩 input값으로 받아서 array[i]로 저장. 여기선 한 값씩 저장이라고 했지만, 실은 한 줄 단위와 비슷한 것 같다. 세로 길이만큼 for문을 돌려서 input().split()으로 한 줄 단위 값들을 한번에 입력받고, 이걸 append()함수를 통해 list의 맨 뒤에 줄 단위로 한번에 입힐건지, [i]번째 행에 값을 넣을건지 차이 같다.

 

#선언과 동시에 입력받기

for _ in range(세로길이)의 크기만큼 선언 후 input().split()으로 입력받기

 

 

3. 행/열

 

- 2차원 배열에서의 행/열 : array[Rows][Columns] = array[y][x]

 

4. 삭제

1) del을 통해 특정 인덱스에 위치한 데이터 삭제 : del array[1]

 

2) array.remove()통해 특정 값 삭제 : array.remove(1)

  • 찾을 아이템이 없으면 ValueError 발생

3) pop()을 통해 특정 인덱스에 위치한 값 출력 후 삭제 : array.pop(1)

4. 기타

 - list는 [], 튜플은 (), 딕셔너리와 set은 {} 사용

 

 

4. 질문 

-  1차원 배열을 선언했는데 input().split()으로 받으면 알아서 2차원으로 만들어져서 챡챡 값이 들어가는지를 이해하지 못했다. 

- append()의 개념을 아직 이해못했다,.c++의 경우 append를 사용하면 이미 만들어진 리스트 뒤에 새로운 메모리를 할당하고, 값들이 들어가는거라 생각했는데 python은 이미정의된 리스트에 값들을 촥 넣어주는 느낌? 그런데 append()만으로 내가 리스트의 어떤 행에 값을 집어넣어야 하는지 어떻게 아는건지 몰겟다. 이미 메모리는 0으로 채워져있는데,,.. 

 

5. 1차원 배열 선언 및 초기화

- list = [0 for i in range(n)] 

 

2. 리스트 사용 시 주의 사항

- 리스트를 여러 개 선언하고, 그 중에서 크기가 1000만 이상인 리스트는 용량 초과 될 가능성이 높음

- 일반 코테 환경에선 파이썬으로 제출한 코드가 1초에 2000만번 정도 연산을 수행

- 제한 시간 1초, 데이터 개수가 100만인 문제가 있다면 일반적으로 NlogN으로 풀어야 함

- 코테 환경에 Pypy3가 있다면 해당 방식을 사용하자(파이썬3의 문법을 그대로 지원하고 대부분 파이썬3보다 실행 속도가 더 빠르다)

 

3. list와 tuple

- 복수개의 값을 담을 수 있는 데이터 구조

- 리스트는 [ ]으로 둘러싸지만 튜플은 ( )으로 둘러싼다.

- 리스트는 값의 생성, 삭제, 수정이 가능하지만(mutable),  튜플은 값을 바꿀 수 없다(immutable)

- 대신 튜플은 메모리 효율성이 뛰어나고, 데이터 시각화를 위해 사용됨

 

4. 최대/최소값

- max_value = max ( map(max, array) ) 

 

5. 튜플

1) 튜플 단위의 list 입력받기

 ex) N명의 학생 정보를 입력받기. 학생 정보는 (이름, 번호)로 받는다.

 students = []

 for i in range(N):

     input_data = input().split()

     students.apped( [ input_data[0], int(input_data[1]) ]) #[] 까먹지 말기!

 

'프로그래밍 언어 > python' 카테고리의 다른 글

수학  (0) 2021.07.29
python 에러 모음  (0) 2021.07.28
python 기초 - 구현  (0) 2021.07.24
중복 제거  (0) 2021.07.22
정렬  (0) 2021.07.21