상태이상 : 호기심 중독

이것저것 알아두면 언젠간 도움이 된다.

코딩/Python!

2차 리스트 [Python]

IT코코아 2018. 5. 28. 03:26

2차 리스트는 사람마다 다른 방식으로 만들어 낼 수 있다고 생각합니다.

제가 정리한 방법은 총 4가지 방법입니다.

a = []
for x in range(100) :
    a.append([0])

for y in range(10):
    for x in range(10):
        print(a[x][0],end=" ")
	print("")

제가 2차 리스트를 어떻게 만들지 하다가 이런 식으로 만들어봤습니다.

리스트함수인 .append()를 이용하여 [0]리스트를 100개 추가 시킨 것입니다.
하지만 이방법은 2차 리스트의 열과 행을 잘 이용하기 힘들겠죠.. 2번째줄의 2번째 리스트의 인덱스는 11이니까 a[11]료 표현 해야 하니까요 ㅋㅋ 인덱스 계산하기 귀찮죠. 인덱스 계산 함수를 한번만 만들면 되겠지만 ㅋㅋ

그래서 인터넷으로 알아낸 방법이 있습니다.

b = [[ 9 for x in range(10)]for y in range(10)]
for y in range(10):
    for x in range(10):
        print(b[y][x],end=" ")
    print("")

b = [[ 9 for x in range(10)]for y in range(10)] 이 방식이 다들 쓰고 계신 방법인것 같더군요.
이해하기 쉽게 for문 안의 변수를 x y로 나타냈습니다.

for문을 사용하여 안의 리스트에 9를 10개 채우고
9를 채운 안의 리스트를 x10 한 것 같은 원리입니다.

b = [[1]*10 for y in range(10)]

print(b)
for y in range(10):
    for x in range(10):
        print(b[y][x],end=" ")
    print("")

b = [[ 9 for x in range(10)]for y in range(10)] 는
b = [[1]*10 for y in range(10)]로 짧게 사용할 수도 있습니다.
리스트와 양수의 곱이 나타내는것은 리스트안의 내용을 복사해 양수만큼 추가 해주는 것의 의미이므로
[1]*10은 [1,1,1,1,1,1,1,1,1,1]이 되는 것이죠.

l = [1,2,3]
c = [l for x in range(5)]

print(c)

for y in range(5):
    for x in range(3):
        print(c[y][x],end=" ")
    print("")


[ 9 for x in range(10)]를 대신하여 외부의 리스트를 넣어 만드는 방법입니다.
다른 방식의 방법이라기 보다는 [[ 9 for x in range(10)]for y in range(10)]의 응용인 느낌. 


전  b = [[ 9 for x in range(10)]for y in range(10)] 이걸보고 "아니 for문을 저렇게 쓸 수 있는거야?"
하고 놀랐습니다.

그러니까 궁금해서 리스트 생성할 때 말고도 그냥 사용이 가능한지 테스트 해봤습니다.

# a = 9 for x in range(10) 안됌
# a = "1" for x in range(10) 안됌.

print(9 for x in range(10))
print(type( 9 for x in range(10)))

변수에 담는 것이 안 되서, print()에 다가 넣어봤더니 오류가 안나길래 출력해봤습니다.
<generator object <genexpr> at 0x000001DAEBDB6518>이라는 것이 나와 자료형을 출력 해보니
<class 'generator'>인것을 보니 generator이라는 자료형 인가 봅니다...

무엇일꼬 이것은?? 뭐 지금은 일단 넘어가고 나중에 찾아서 정리 해야겠네요.. 이후 링크 추가 하겠습니다.
그전에 궁금하시면 인터넷검색 ㄱㄱ


정리.

나름 여러가지로 해본(?)2차 리스트 생성방법!

  • a = []
    for x in range(100) :
    a.append([0])              # 행열표현이 힘듦.
  • b = [[ 9 for x in range(10)]for y in range(10)] # 가장 일반적인 2차리스트 생성방법.
  • c = [[1]*10 for y in range(10)] # 위의 생성방법을 단순화.
  • l = [1,2,3]
    d = [l for x in range(5)] # [ 9 for x in range(10)]를 외부 리스트로 변경사용.


반응형

'코딩 > Python!' 카테고리의 다른 글

NumPy 배열 생성, max(), min() [Python]  (0) 2018.06.08
재귀함수 [Python]  (0) 2018.06.06
리스트 [Python]  (0) 2018.05.11
튜플 [Python]  (2) 2018.05.11
입력 input()함수 + Packing, Unpacking [Python]  (0) 2018.05.06