«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Recent Posts
Today
Total
관리 메뉴

짜리몽땅 매거진

[Python] 2차원 리스트&문자열 본문

Data/Python

[Python] 2차원 리스트&문자열

쿡국 2023. 7. 19. 17:50

2차원 리스트&문자열

2차원 리스트
a=[[1,2],[3,4],[5,6]]
a
[[1, 2], [3, 4], [5, 6]]
for i in a:
    print(i)
[1, 2]
[3, 4]
[5, 6]
for i,j in a:
    print(i,j,end='  ')
1 2  3 4  5 6  
반복문을 2번 사용해서 2차원 리스트 출력하기
for i in a:
    for j in i:
        print(j,end='')
    print()
12
34
56
반복문을 2번 사용하되, for range 사용해 2차원 리스트 출력하기
for i in range(len(a)):
    for j in range(len(a[i])):
        print(a[i][j],end='')
    print()
12
34
56
while 사용해서 리스트 출력하기
i=0
while i<len(a):
    j=0
    while j<len(a[i]):
        print(a[i][j],end=' ')
        j+=1
    print()
    i+=1
1 2 
3 4 
5 6 
반복문을 사용해서 리스트 만들기
a=[]
for i in range(5,30):
    a.append(i)
a
[5,
 6,
 7,
 8,
 9,
 10,
 11,
 12,
 13,
 14,
 15,
 16,
 17,
 18,
 19,
 20,
 21,
 22,
 23,
 24,
 25,
 26,
 27,
 28,
 29]
반복문을 사용해서 2차원 리스트 만들기
a=[]
for i in range(5):
    b=[]
    for j in range(3):
        b.append(j)
    a.append(b)
a
[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]

* 추가 과제

아래의 반복문 코드를 변경하는 순간 다른 값들이 나오는지를 구체적으로 주석처리로 적어주세요.
1 --> 정상적으로 원하는 값이 나오는 코드
a = []
for i in range(4):
    b= []
    for j in range(5):
        b.append(j)
    a.append(b)
a
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]

2
a = []
for i in range(4):
    b= []
    for j in range(5):
        b.append(j)
        a.append(b)
a #종속된 반복문에 안쪽 리스트, 즉 b를 5번 출력하고 이를 다시 i 루프인덱스를 통해 4번 출력하므로 총 20번 출력된다.
[[0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4]]

3
a = []
b= []
for i in range(4):
    for j in range(5):
        b.append(j)
    a.append(b)
b #b=[]가 반복문에 종속되지 않았다. 0,1,2,3,4 가 리스트 형태가 아니라 4번씩 반복되어 총 20개의 요소가 하나의 리스트로 출력된다.
[0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
a #a.append(b)까지 적용되어 b의 값을 4번 반복하는 리스트가 출력된다. 즉 b를 참조한 것이 아니라 b의 참조를 공유한 것.
[[0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4]]

4
for i in range(4):
    a = []
    b= []
    for j in range(5):
        b.append(j)
    a.append(b)
a #안쪽 반복문을 실행했을 때 a=[], b=[0,1,2,3,4]이다. 그리고 a.append(b)를 실행해 a=[[0,1,2,3,4]]가 된다. a가 반복문 바깥에서 입력되지 않고 반복문 안에 종속되어있기 때문에 b의 값이 저장되어 반복되는 것이 아니라 계속 초기화되어 결국 a는 b 리스트 한번만 포함하게 된다. 
[[0, 1, 2, 3, 4]]

5
for i in range(4):
    for j in range(5):
        a = []
        b= []
        b.append(j)
    a.append(b)
a #안쪽 반복문을 실행하는 동안 b의 값에 0,1,2,3,4가 계속 쌓이는 것이 아니라 b의 값이 []로 재정의되면서 마지막 4만 출력되며 b=[4]가 된다. 
[[4]]


6
a = []
for i in range(4):
    b= []
    for j in range(5):
    b.append(j)
    a.append(b)   #애초에 안쪽 반복문에 대한 코드가 입력되지 않았다.
  File "C:\Users\rnrwnsgh\AppData\Local\Temp\ipykernel_22560\2606770375.py", line 5
    b.append(j)
    ^
IndentationError: expected an indented block