728x90
반응형
[key word] 리스트 내포, 배열, 어레이, 차원, 면 , 행, 열
파이썬 실습창을 열 수 있습니다.실습창 열기
리스트 핸들링
리스트 핸들링(list handling)은 리스트를 처리하는 것입니다.
- 리스트 자료구조(data structure)는 확장된 배열입니다. 일반적인 배열(행렬, array, matrix, table)은 같은 형(type), 같은 크기의 data를 일정한 차례나 간격으로 벌여 놓은 것이지만 list는 다른 형, 다른 크기도 함께 늘여놓을 수 있습니다.
- 리스트는 기본적으로 한 줄로 되어 있는 일차원 구조이지만 리스트 속에 리스트를 사용하는 리스트 내포(list comprehension)로서 높이(면), 줄(행), 칸(열) 등이 있는 다차원 구조도 구성할 수 있습니다.
- 2차원 리스트 (2-dimensional list)는 개념상 행(row), 열(column)로 구성되고, 3차원 리스트는 면(plane), 행(row), 열(column)로 구성된 입방체입니다. 이러한 배열 형태는 문제 해결에서 많이 사용되는 주요한 자료구조입니다.
- python에서 module을 호출하면(import array) 전통적인 배열도 사용할 수 있습니다.
1. 2차원 리스트
2차원 리스트 핸들링 연습을 위하여 10행(세로), 10열(가로)의 리스트에 점(dot)을 넣고 출력합시다.
n=10
a=[['.']*n for i in range(n)]
for i in a:
w=' '.join(i) # 공백은 3칸
print(w)
2. 하나의 요소
2행 3열의 요소(element)에 @(at sign)을 넣었습니다.
빨간 별이 있는 곳에도 @을 넣어보세요.
n=10
a=[['.']*n for i in range(n)]
a[2][3]='@' # 2행 3열에 @을 넣음 (에이 인덱스 2, 인덱스 삼)
for i in a:
w=' '.join(i)
print(w)
더보기
n=10
a=[['.']*n for i in range(n)]
a[2][3]='@'
a[5][2]='@'
a[8][5]='@'
for i in a:
w=' '.join(i)
print(w)
3. 하나의 행과 열
하나의 행 또는 하나의 열로 된 요소에 @을 넣어봅시다.
다음의 예는 3행에 3열부터 5개의 @를 넣은 모습입니다.
빨간 별이 있는 곳에도 @을 넣어보세요.
n=10
a=[['.']*n for i in range(n)]
for i in range(5): # 5개이므로 5
a[3][i+3]='@' # 3행, i+3열에 기록
for i in a:
w=' '.join(i)
print(w)
'''
3번과 4번 줄을 다음과 같이 코딩할 수도 있습니다.
그러나 위와 같이 코딩하는 것이 응용성이 좋습니다.
for i in range(3,8):
a[3][i]='@'
'''
더보기
n=10
a=[['.']*n for i in range(n)]
for i in range(5):
a[3][i+3]='@'
for i in range(5):
a[5][i+2]='@'
for i in range(5):
a[i+5][8]='@' # 행이 바뀌고 열 고정
for i in a:
w=' '.join(i)
print(w)
4. 대각선
대각선으로 기록한 코드를 참고하여 빨간 별자리에 @를 넣어보세요.
n=10
a=[['.']*n for i in range(n)]
for i in range(5):
a[i][i+2]='@'
for i in range(5):
a[i+5][4-i]='@' # i는 증가, 4-i는 감소
for i in a:
w=' '.join(i)
print(w)
더보기
n=10
a=[['.']*n for i in range(n)]
for i in range(5):
a[i][i+2]='@'
for i in range(5):
a[i+5][4-i]='@'
for i in range(5): #이곳 추가
a[i][i]='@'
for i in range(5): #이곳도 추가
a[i+5][8-i]='@'
for i in a:
w=' '.join(i)
print(w)
5. 사각형
사각형 기록을 참고하여 빨간 사각형을 완성하세요.
n=10
a=[['.']*n for i in range(n)]
for i in range(3):
for j in range(5):
a[i+2][j+3]='@'
for i in a:
w=' '.join(i)
print(w)
더보기
n=10
a=[['.']*n for i in range(n)]
for i in range(3):
for j in range(5):
a[i+2][j+3]='@'
for i in range(5): # 5 줄
for j in range(3): # 3 칸
a[i+5][j+1]='@'
for i in a:
w=' '.join(i)
print(w)
6. 삼각형
빨간 별 부분을 완성하세요.
n=10
a=[['.']*n for i in range(n)]
for i in range(3):
for j in range(i+1):
a[i+2][j+1]='@'
a[i+1][7-j+1]='@'
for i in a:
w=' '.join(i)
print(w)
더보기
n=10
a=[['.']*n for i in range(n)]
for i in range(3):
for j in range(i+1):
a[i+2][j+1]='@'
a[i+1][7-j+1]='@'
for i in range(4):
for j in range(i+1):
a[i+6][3-j]='@'
a[i+5][j+6]='@'
for i in a:
w=' '.join(i)
print(w)
7. 이등변 삼각형
빨간 별 부분을 완성하여 보세요.
n=10
a=[['.']*n for i in range(n)]
for i in range(5):
for j in range(i*2+1):
a[i+1][5-i+j]='@'
for i in a:
w=' '.join(i)
print(w)
더보기
n=10
a=[['.']*n for i in range(n)]
for i in range(5):
for j in range(i*2+1):
a[i+1][5-i+j]='@'
for i in range(3): # 3줄
for j in range((2-i)*2+1): # @의 개수는 i와 반대
a[i+6][i+2+j]='@'
for i in a:
w=' '.join(i)
print(w)
'''
조금 어렵습니다.
연구하여 터득하세요.
'''
수고하셨습니다.
더 공부해야할 부분이 있지만 너무 길어져서 생략합니다.
많이 이용되므로 충분히 이해하여야 합니다.
안녕!
728x90
반응형
'알고리듬' 카테고리의 다른 글
[알고리듬] #78 4N 마방진 (2) | 2024.05.01 |
---|---|
[알고리듬] #77 홀수 마방진 (2) | 2024.05.01 |
[알고리듬] #75 순위 구하기 (1) | 2024.04.28 |
[알고리듬] #74 선택 정렬 (0) | 2024.04.27 |
[알고리듬] #73 버블 정렬 (0) | 2024.04.27 |