※ 모든 문제의 저작권은 SW Expert 아카데미에 있습니다. 학습 기록용으로 입니다. 문제시 삭제하겠습니다.
리스트 입력받는 세가지 방법
# 입력받는 방법1
for i in range(n):
lst.append(list(map(int, input().split())))
# 입력받는 방법2
lst = [list(map(int, input().split())) for _ in range(n)]
# 입력받는 방법3
lst = [0 for _ in range(n)] # lst = [0]*n
for i in range(n):
lst[i] = list(map(int, input().split()))
리스트 내 원하는 데이터 위치찾는 두가지 방법
# 원하는 데이터 위치 찾기 방법1
nlst = []
for i in range(n):
lst[i] = nlst(map(int, input().split()))
# 여기부터 비교해 찾아 저장하는 곳
for j in range(m):
if lst[i][j] == 1:
nlst.append([i][j])
# 원하는 데이터 위치 찾기 방법2
lst = [list(map(int, input().split())) for _ in range(n)]
nlst = [(i,j) for i in range(n) for j in range(m) if lst[i][j]==1]
리스트 순회하는 여러가지 방법
# 리스트 행우선 순회
for i in range(len(lst)):
for j in range(len(lst[i])):
lst[i][j] # 필요한 연산 수행
# 리스트 열우선 순회
for j in range(len(lst[0])):
for i in range(len(lst)):
lst[i][j] # 필요한 연산 수행
# 리스트 지그재그 순회
for i in range(len(lst)):
for j in range(len(lst[i])):
# i가 홀수행이면 나머지 연산자를 이용해 0을 곱해 첨부터 시작하고
# 짝수행이면 1을 곱해 지장없게 만든 후 뒤에서 부터 시작
# m-1, -2하는 이유는 행렬은 (0,0)부터 시작하기때문이고 j를 곱해주는 건 뒤에서 부터 시작해야하기때문
lst[i][j + (m-1-2*j) * (i%2)]
# 필요한 연산 수행
# 델타를 이용한 2차 리스트 탐색(특정좌표 기준 인접한 좌표(상하좌우)들을 탐색)
dx = [0,0,-1,1] # 상하좌우
dy = [-1,1,0,0]
for x in range(len(lst)):
for y in range(len(lst[x])):
for i in range(4):
testx = x + dx[i]
testy = y + dy[i]
print(lst[testx][testy])
리스트 전치행렬 구하는 두가지 방법
# 전치행렬 ex.(3,3)행렬
for i in range(3):
for j in range(3):
if i < j:
lst[i][j], lst[j][i] = lst[j][i], lst[i][j]
# zip(*lst)를 이용한 전치행렬
lst = [[1,2,3], [4,5,6], [7,8,9]]
print(list(zip(*lst)))
반응형