PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2021/12/26 19:29:51
Name 민트초코우유
Subject [질문] 파이썬 코딩 질문드립니다.
안녕하세요 피식인여러분

파이썬 코딩 뉴비입니다. 아래처럼 코드를 써보다가 도저히 이해가 안되서 질문 올립니다.

pt1 = [2,3]
pt2 = [1,2]

def segment(pt1, pt2):
    current = []
    non_list = []
    for i in range(1,5):
        a = 1/i
        b = 1-1/i
        for j in range(len(pt1)):
            r = pt1[j]*a+pt2[j]*b
            non_list.append(r)
        current.append(non_list)
        non_list.clear()
    return current
print(segment(pt1,pt2)

위와 같은 코드를 실행하면 current가 [[], [], [], []]으로 출력됩니다.

원래의 의도는 non_list에 [x1,y1]을 저장하고 이 리스트를 current에 보낸 뒤 다시 다시 non_list를 비우고 [x2,y2]를 만든 뒤 이 리스트를

current에 보내는 작업을 반복함으로써 [[x1,y1],[x2,y2],...,[x4,y4]]를 만드는게 목표입니다.

그런데 함수의 결과값으로 공란이 나오는게 이해가 안됩니다 흑흑





통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
구리구리TM
21/12/26 19:53
수정 아이콘
non_list.clear() 에서 문제가 발생하는 것 같습니다.
일단 non_list = []로 바꾸면 정상적으로 작동합니다.
아무래도 append로 인해 같은 주소를 참조하게 되는데 그 내용을 clear로 날리게 되어 문제가 발생 한 게 아닐까 싶습니다.
민트초코우유
21/12/28 22:51
수정 아이콘
주소참조 개념을 생각하지 못했네요 흐...
NULLPointer
21/12/26 20:30
수정 아이콘
윗분 말씀대로 current에 들어간 non_list를 clear()해버리기 때문에 발생하는 현상입니다.
아래처럼 non_list를 clear 하지 마시고 for 문 안에서 새로 생성해버리시면 해결 될겁니다.

pt1 = [2,3]
pt2 = [1,2]

def segment(p1, p2):
current = []
for i in range(1,5):
non_list = []
a = 1 / i
b = 1 - a
for j in range(len(p1)):
r = p1[j] * a + p2[j] * b
non_list.append(r)
current.append(non_list)
return current

print(segment(pt1,pt2))
민트초코우유
21/12/28 22:52
수정 아이콘
말씀대로 하니까 제대로 돌아갑니다 흑
피지알유저
21/12/26 21:30
수정 아이콘
주소 참조만 해놓고 해당 주소의 집을 없애면 나중에 참조한 주소 찾아가도 집이 없는게 당연하지요.
민트초코우유
21/12/28 22:53
수정 아이콘
그냥 무지성으로 코드를 넣다보니 생각이 짧았네요 따흑
사이먼도미닉
21/12/26 23:32
수정 아이콘
핵심은 리스트가 mutable한 객체이기 때문입니다. 이거랑 얕은 복사, call by object reference에 대해서 더 검색해보세요.

current에 추가된 non-list가 값으로 전달된 것이 아니라 객체 참조로 전달 되어서, current에 있는 리스트와 기존의 non-list는 같은 리스트가 됩니다. 그러니 clear를 하면 같이 제거가 되지요.
민트초코우유
21/12/28 22:53
수정 아이콘
덕분에 질문 이상으로 더 배워갑니다~!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
163263 [질문] 엑셀에서 보이는부분만 붙혀넣는 방법이 있을까요?? [14] 사는게젤힘드러5873 22/04/27 5873
162847 [질문] 노트북(이번에 나온 LG 그램) 메모리 16과 32기가 차이가 어느정도일까요? [6] BlueSKY--5900 22/04/07 5900
162778 [질문] 코딩을 배우고 싶은데 조언 부탁 드립니다. [7] WhiteBerry3412 22/04/04 3412
162620 [질문] 영어공부가 미친듯이 싫은데 공부할 방법 없을까요? [39] 신류진7356 22/03/28 7356
162594 [질문] 노트북 구매하려 합니다. 도움 좀 부탁드립니다. [1] 색마3352 22/03/26 3352
162570 [질문] 홈페이지를 웹뷰 어플로 제작하려고 합니다(플레이스토어 목표) [1] 엔쏘2181 22/03/25 2181
161684 [질문] 밥솥중에 스텐내솥은 어디가 좋나요? 바람의바람5043 22/02/11 5043
161638 [질문] fast campus 어떤가요? [12] 주식을마시는새5353 22/02/09 5353
161569 [질문] 취미이지만 진지하게 코딩을 배워 보고 싶습니다. [6] GoThree6563 22/02/06 6563
161528 [질문] 컴퓨터 견적 질문드립니다. [8] Su A4278 22/02/04 4278
161380 [질문] 컴퓨터 비전공자가 입문하기 좋은 코딩 및 머신러닝 교육컨텐츠에 어떤게 있을까요? [9] daftpunk5832 22/01/27 5832
160829 [질문] 코딩을 깔끔하게 하는 비법이 있을까요? [14] 멋진신세계6839 22/01/02 6839
160643 [질문] 파이썬 코딩 질문드립니다. [8] 민트초코우유6964 21/12/26 6964
160405 [질문] 아이폰 단축어 앱에서 도로명 주소를 가져오는 방법 [3] 허느6493 21/12/17 6493
160148 [질문] 회사를 옮겨야 할까요? [18] 시계깎는노인8240 21/12/04 8240
159959 [질문] 그룹스터디 할만한 곳 추천 부탁드립니다 [3] 용노사빨리책써라6989 21/11/25 6989
159898 [질문] 파이썬 이중 for range 질문입니다 [6] 회전목마7098 21/11/23 7098
159788 [질문] 영상편집 노트북 추천주시면 감사하겠습니다. [11] 스카야9498 21/11/18 9498
159450 [질문] 코딩이 뭔가요? [31] 오렌지망고9407 21/11/03 9407
159069 [질문] 엑셀-VBA를 공부하려면 어떤식으로 접근해야 할까요. [2] 스핔스핔8662 21/10/18 8662
158941 [질문] 코딩 부트캠프 후기나 추천 부탁드립니다. [6] 네파리안8302 21/10/13 8302
158794 [질문] 개발용 컴퓨터 견적 확인 부탁드립니다. [7] 황신강림7468 21/10/08 7468
157684 [질문] 이직 고민중입니다 (IT) [4] 버벌진트8504 21/08/23 8504
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로