Python

[python] for _ in range

콧등치기국수 2020. 10. 31. 20:01

 

2차원 리스트 코딩하기

>>> [[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]] 어떻게?

 

# 2차원 리스트 만들기

a= []
count = 0
for i in range(5):
    a.append([])                 # 결과: [[], [], [], [], []]
    for _ in range(5):
        count += 1
        a[i].append(count)
print(a)


# 결과:[[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]]

 

1. 숫자들을 넣을 빈 리스트 만들기

for i in range(5): 
    a.append([ ])

print(a)

# 결과: [ [ ] , [ ] , [ ] , [ ] , [ ] ]

1) for문을 순회하면서 순차적으로 i = 0,1,2,3,4 가 됩니다.

 

    i = 0  -->  리스트 a 에 [ ] 추가              a =[ [ ] ]

    i = 1  -->  리스트 a 에 [ ] 추가              a = [ [ ] , [ ] ]

    i = 2  -->  리스트 a 에 [ ] 추가              a = [ [ ] , [ ] , [ ] ]

    i = 3  -->  리스트 a 에 [ ] 추가              a = [ [ ] , [ ] , [ ] , [ ] ]

    i = 4  -->  리스트 a 에 [ ] 추가              a = [ [ ] , [ ] , [ ] , [ ] , [ ] ]

 

 

 

2. 빈 리스트에 for문 이용하여 숫자 넣기

for _ in range(5): 
    count += 1 
    a[i].append(count)

 

1) for _ in range 는 무엇인가

 

_는 어떤 특정값을 무시하기 위한 용도로 사용되기도한다.

값이 필요하지 않거나 사용되지 않는 값을 _에 할당할 수 있다.

index가 필요없는 for loop문에 사용할 수 있다.(index 지정X)

# 1.특정값 무시
x, _, y = (1, 2, 3)      # x = 1, y = 3

# 2.여러개의 값 무시
x, *_, y = (1, 2, 3, 4, 5)       # x = 1, y = 5

# 3.인덱스 무시: 단순히 print만 하는 반복문에서는 index가 의미가 없다.
for _ in range(3):
    print("weekend!")

'''3.결과
weekend!
weekend!
weekend!
'''

 

2) 2중첩 반복문

 

아래 코드가 정확히 이해가 되지 않는다면 아래 자세한 설명을 보면 바로 이해가 될 것이다!

a= []
count = 0
for i in range(5):
    a.append([])          
    for _ in range(5):
        count += 1
        a[i].append(count)
print(a)

 

① 첫번째 for문:  i = 0  /  두번째 for문:  _ = 0,1,2,3,4 

>>> i = 0 일때 _ 는 5번 반복하게 됨 

 

첫번째 for문)     a = [ [ ] ] 

두번째 for문)     count = 1

                      a[0].append(1)

                      a = [ [1] ]                 # 한 번 반복 끝남 다시 2번째 for문으로 돌아감

                     

                      count = 2

                      a[0].append(2)

                      a = [ [1,2] ]               # 한 번 반복 끝남 다시 2번째 for문으로 돌아감

 

                      count = 3

                      a[0].append(3)

                      a = [ [1,2,3] ]             # 한 번 반복 끝남 다시 2번째 for문으로 돌아감

 

                      count = 4

                      a[0].append(4)

                      a = [ [1,2,3,4] ]           # 한 번 반복 끝남 다시 2번째 for문으로 돌아감

 

                      count = 5

                      a[0].append(5)

                      a = [ [1,2,3,4,5] ]         # 두번째 for문 끝남, 첫번째 for문으로 돌아감(i = 1로 다시 시작)

 

 

 첫번째 for문:  i = 1  /  두번째 for문:  _ = 0,1,2,3,4

>>> i = 1 일때 _ 는 5번 반복하게 됨 

 

첫번째 for문)    a = [ [ 1,2,3,4,5 ],  [ ] ]

두번째 for문)     count = 6

                      a[1].append(6)

                      a = [ [ 1,2,3,4,5 ],  [6] ]               # 한 번 반복 끝남 다시 2번째 for문으로 돌아감

                     

                      count = 7

                      a[1].append(7)

                      a = [ [ 1,2,3,4,5 ],  [ 6,7 ] ]           # 한 번 반복 끝남 다시 2번째 for문으로 돌아감

 

                      count = 8

                      a[1].append(8)

                      a = [ [ 1,2,3,4,5 ],  [ 6,7,8 ] ]         # 한 번 반복 끝남 다시 2번째 for문으로 돌아감

 

                      count = 9

                      a[1].append(9)

                      a = [ [ 1,2,3,4,5 ],  [ 6,7,8,9 ] ]       # 한 번 반복 끝남 다시 2번째 for문으로 돌아감

 

                      count = 10

                      a[1].append(10)

                      a = [ [ 1,2,3,4,5 ],  [ 6,7,8,9,10 ] ]     # 두번째 for문 끝남, 첫번째 for문으로 돌아감(i = 2로 다시 시작)

 

 

③ i = 2

④ i = 3

⑤ i = 4    끝!

 

 

이런 식으로 진행되어서 아래와 같이 나오게 된다!

 [[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]]

 

처음에 답을 보고도 이해가 안되어서 걱정했는데

모르는 것들을 하나하나 찾으니 이제 완벽히 이해가 되었다.

for문에서 index를 꼭 써야 한다고 생각했는데

_ 를 사용해서 단순 반복만 하게 할 수 있는 점이 재밌었다.

다음에 활용할 수 있으면 좋겠다.

 

 

참고자료: 하나, 두울

참고자료덕분에 이해가 잘 되었다.

내 글을 for문에만 집중하였으므로 _의 사용에 대해 더 알고싶다면 참고자료를 꼭 보면 좋을 듯하다.