파이썬: 동적 변수로 리스트 만들기 궁금증.
조회수 2231회
안녕하세요. 코린이 입니다.
하나를 구현해보고 싶은데 잘 되지 않네요..
구현하고자 하는 것은
- 가령 listA라는 리스트가 있으면 이걸 n으로 나누어서 리스트를 쪼갭니다. (본문에서는 5로 나누어서 3개의 리스트로 쪼갬)
- 그리고 쪼개진 리스트는 각각 listA-1, listA-2, listA-3이라는 이름을 가지고,
- 각 각의 이름 변수는 쪼개진 리스트 listA[0], listA[1], listA[2]에 Binding 합니다.
즉, 임의의 리스트를 입력한 수로 쪼개고, 쪼개진 수에 맞게 자동으로 생성된 이름을 쪼개진 리스트들과 각각 바인딩 하는게 만들고자 하는 최종 목적입니다.
이모저모 찾아봐서 1) 리스트를 쪼개기. 2) 입력한 수에 맞도록 쪼개진 리스트 수에 맞게 자동으로 이름 만들기는 됩니다만,
3) 이름 변수와 쪼개진 리스트 바인딩을 못 하겠습니다.
코딩을 취미삼아 공부해보고자 하는데, 너무 어렵네요.
(제가 작성한 질문 제목이 적합한지도 모르겠습니다.)
고수분들의 조언 감사드립니다.
listA = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
n = 4
results = [listA[i*n:(i+1)*n] for i in range((len(listA) -1 + n) // n)]
def setName():
names = []
for i in range(len(results)):
names.append("listA-" + str(i + 1))
print(names)
#아래 부분에서 막힘.
for name in names:
globals()[name] = results[]
#아래는 정상 작동함.
for name in names:
print(name, "=", globals()[name])
setName()
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
A 라는 리스트를 쪼개서, 작은 리스트로 A_1, A_2, A_3 이렇게 만들겠다는 거죠? 굳이 A_1 같은 이름을 만들 필요가 없어요. 그냥 리스트의 리스트로 만들어서, A_lists[0], A_lists[1], ... 이렇게 하면 됩니다.
아래 예를 들어보겠습니다.
>>> l = list(range(50)) >>> n = 15 >>> lists = [ l[i*n:(i+1)*n] for i in range((len(l) + n -1) // n) ] >>> lists [[0, 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, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44], [45, 46, 47, 48, 49]] >>> lists[0] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] >>> lists[1] [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29] >>> def process_list(l_15): s = sum(l_15) return s >>> for i, list_i in enumerate(lists): print(i, process_list(list_i)) 0 105 1 330 2 555 3 235
50개 짜리 리스트를 쪼개서, lists 라는 변수에 담고, 쪼개진 하나하나의 리스트를 접근한 때에는 lists[0], lists[1], ... 이렇게 접근하여 사용합니다.
OK?
- 감사합니다. 도움주신 코드로 연습해 보겠습니다. ^^ 코딩이 재미난데 참 어렵네요. 그리고.. 제가 이 곳을 처음 써보는데.. 제가 작성할때의 글과 질문에 등록된 글의 형식이 조금 다른 것 같은데.. 자동으로 수정된 건가요?? 아니면 누군가가 편집해 주신거에요?? 알 수 없는 사용자 2021.2.23 10:25
- 해시코드는 권한 있는 사람이 질문글을 "수정"(주로 마크다운 적용 개선)하는 게 가능합니다. 작성자/수정자 표시 옆에 ">" 버튼이 있으면 수정된 적이 있는 겁니다. https://hashcode.co.kr/question/12711/history 엽토군 2021.2.23 11:52
댓글 입력