이 블로그는 애드센스 수익으로 운영되고 있습니다.
광고차단앱을 해제해주시면 블로그 운영에 큰 도움이 됩니다.
Please disable Adblock?
본문 바로가기
정보, 기술/개발 모음

[Python] 리스트 이름 받아오기 (동적 할당, 참조 하는 법) | 파이썬

by 킨쨩 2021. 11. 2.
반응형

[Python] 리스트 이름 받아오기 (동적 할당, 참조 하는 법) |  파이썬

 연구를 하면서 파이썬으로 리스트를 만들다가 생각했다. "이름이 숫자 + 규칙적인데, 어떻게 리스트에 한번에 간편히 넣을 방법은 없을까?" 특히 많은 양의 데이터를 다루게 되면 될수록, 필수적인 내용이지만, 한국어로 정리된 자료가 없었기에 정리해보게 되었다. 컴공이 아니라 기계공학과 출신인 나로써는 어떻게 검색해야 나오는지도 막막했기에, 검색하기 쉽도록 (내가 삽질했던) 검색어를 미리 적어둔다.

 

검색어(키워드): 파이썬 동적 리스트 찾기, 파이썬 다른 리스트 찾기, 파이썬 동적 리스트 읽기, python refer dynamic variable name, python dynamic variable name in loop, 동적 변수 할당, 동적 변수 불러들이기, 동적 변수 읽기, 동적 변수 이름, 변수 이름 loop, 변수 이름 생성 숫자, 변수 이름 문자열 받기, 변수 이름 문자열, 파이썬 변수 리스트, 파이썬 숫자 리스트 리스트화, 파이썬 숫자 이름 일괄 넣기, 파이썬 이름 숫자 일괄, 파이썬 리스트 리스트


개요

 파이썬의 리스트를 만들다보면, for 등등 루프를 사용해서 이름을 동적으로 만들고 싶을 경우나 만들어진 데이터들을 한 번에 불러들여서 처리하고 싶은 경우가 있을 것이다. 나의 경우, 졸업 연구를 위한 데이터 처리에서 9 * 3 의 27개의 데이터가 있었다. 그리고 이러한 처리를 하나씩 하는 프로그램을 이용하고 있었다. 이를 한꺼번에 27개를 동시에 불러들여서 처리하려고 했으나, 같은 이름을 분명히 넣었음에도 불구하고, 단순한 문자열 리스트가 생성 되었다. 이를 방지하고 제대로 내가 생각한 대로 단순한 문자열 리스트가 아닌, 데이터가 들어가는 리스트를 생성하기 위한 방법에 대해서 알아보도록 하자.


리스트, 딕셔너리 등등 동적 생성

 아주 간단하다. 아래와 같은 코드를 넣어주면 동적으로 생성할 수 있다.

sum_text_list=[]
for a in list(range(1,9)):
        temp_list=[]
        for b in list(range(1,3)):
            temp_list.append([])
        sum_text_list.append(temp_list)

 나의 경우, 빈 리스트들의 리스트로 이루어진 리스트를 27개 만들게 되었다. (물론, 자릿수가 0부터 시작이기 때문에 실질적으로는 4*10으로 40개 짜리 리스트가 생성되었지만, 0,1,2 보다는 실험 번호에 맞춘 1,2,3이 직관적이기에 이렇게 만들었다.


단순한 텍스트가 아닌, 리스트 등등을 통체로 집어넣기 위한 동적 참조

크게 다음의 두가지 함수를 사용하면 간단히 구현할 수 있다.

문자열의 원하는 곳에 데이터를 넣어주는 format 함수

 먼저 format 함수에 대해서 알아보자

 format함수는 포매팅을 통해서 간단하고 쉽게, 문자열을 재사용 가능하도록 만들어주기 위한 함수이다. 쉽게 말해서, 중간중간에 특정 변수들의 값을 넣어줄 수 있는 것이다. C언어에 익숙한 사람이라면, "%d" 와 같은 치환자들을 떠올리면 된다. 사용법은 아주 간단하다.

a = '대입하기'
b = '저쩌구'
'내가 쓰고 싶은 문자열 {0} 어쩌구 {1}'.format(a,b)

 위의 코드를 실행하면, 아래와 같은 결과가 나올 것이다.

"내가 쓰고 싶은 문자열 대입하기 어쩌구 저쩌구 "

 작은 따옴표 ' '로 원하는 문자열을 감싼 후, {0}부터 시작하는 변수들을 적어 넣어주면 된다. 같은 값을 원하면 {0}을 여러번 넣어도 된다. 또한, 오른쪽의 .format()의 왼쪽부터 순서대로 0, 1, 2...로 대입되게 된다. 또한, 문자열이 아닌 다른 데이터들도 넣어줄 수 있다.

 

 좀 더 구체적인 사용방법의 경우, 아래와 같다.

  • {}와 같이 빈 경우에는, 순서대로 값이 들어가게 된다.
  • 중괄호를 쓰고 싶다면 {{}}를 이용하면 된다. 중괄호 안에 다른 값을 넣고 싶다면 {{{1}}}과 같이 입력해주자.
  • <,>,^와 몇자리를 뜻할지의 숫자를 조합해서 정렬을 나타낼 수 있다.  {0:<5}
  • 정렬시 공백에 다른 문제를 채울 수 있다. {0:-<5}
  • 정수의 N자리수의 경우, 0Nd로 나타낼 수 있다. {0:04d}
  • 소수의 N자리수의 경우, 0.Nf로 나타낼수 있다. {0:0.4f}

일단 함수를 실행해주는 eval 함수

 다음으로 eval이라는 함수에 대해서 알아보자

 eval 함수는 매개변수로 받은 epression을 실행해주는 함수이다. 쉽게말해서 문자열을 넣으면 실행한 값을 전달해주는 것이다. eval("1+2")와 같이 문자열을 넣으면 3이라는 출력값을 내놓게 된다. 우리는 위에서 format을 통해서 정해준 이름을 실행시켰을 때 나오는 원래 값, 즉 위의 어딘가에서 정의해준 값을 빈 리스트에 추가해 넣어줄 것이다.


실제 활용

나의 경우, 미리 다음과 같은 데이터를 넣어 두었다.

check_points1_1 = ['어쩌구','저쩌구']
...
check_points9_3 = ['어쩌구','저쩌구']

이러한 데이터를 하나의 리스트에서 참조하게 하려면, 위의 두가지 코드를 활용해서 아래와 같이 작성하면 된다.

check_points_list = []
for a in list(range(1,9)):
        for b in list(range(1,3)):
            check_points_list.append(eval('check_points{0}_{1}'.format(a,b)))

맺음말

 이번 게시글에서는, 내가 많이 헤매었던 파이썬의 동적 참조, 동적 생성에 대해서 알아보았다. 여러 데이터를 넣을 리스트를 루프를 통해서 생성하고, 또, 한번에 처리하려는 사람들에게 도움이 되기를 바라며 이만 글을 마친다.

밑에 공감 버튼 한 번씩 클릭 부탁드립니다! 
내용에 관한 질문이나 의견이 있다면 댓글로 남겨주세요.

인스타: @kkingchangg

크라우드픽: @Gehdtlr2547

 

일본 유학 KIN쨩 작가 - 크라우드픽의 사진, 이미지, 일러스트, 캘리그라피

저작권 걱정 없는 상업용 이미지 서비스 크라우드픽에서 일본 유학 KIN쨩 작가의 이미지를 무료로 사용해보세요

www.crowdpic.net

Copyright 2021 KIN All rights reserved. 
KIN

반응형

댓글