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
수정 아이콘
덕분에 질문 이상으로 더 배워갑니다~!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
164828 [삭제예정] 직장인 초보가 소스코드 읽을 정도 되려면 얼마나 걸리나요? [34] Mikopap10342 22/07/14 10342
164598 [질문] Asus 노트북 질문드립니다. 젠북 vs 비버북 [3] 까만고양이5421 22/07/03 5421
164194 [질문] OTT업체들 화질이 원래 안좋은건가요? [8] 카오루7871 22/06/14 7871
164138 [질문] 컴퓨터 공학,구조 공부와 프로그래밍과의 관계 질문드립니다 [8] 잠이온다5976 22/06/11 5976
163992 [질문] 맥 및 윈도우 모니터 선택장애 [5] 그림속동화4244 22/06/02 4244
163766 [질문] 코딩용 노트북 추천 부탁드립니다. [6] Gotetz4862 22/05/23 4862
163706 [질문] 실험실 홈페이지 도메인 [4] Titleist3869 22/05/20 3869
163520 [질문] CPU와 메인보드 질문입니다. [6] 봄날엔4423 22/05/11 4423
163294 [질문] 코딩 질문 하나만요 ㅠㅠ [7] 삭제됨4046 22/04/29 4046
163263 [질문] 엑셀에서 보이는부분만 붙혀넣는 방법이 있을까요?? [14] 사는게젤힘드러6739 22/04/27 6739
162847 [질문] 노트북(이번에 나온 LG 그램) 메모리 16과 32기가 차이가 어느정도일까요? [6] BlueSKY--6751 22/04/07 6751
162778 [질문] 코딩을 배우고 싶은데 조언 부탁 드립니다. [7] WhiteBerry4182 22/04/04 4182
162620 [질문] 영어공부가 미친듯이 싫은데 공부할 방법 없을까요? [39] 신류진9325 22/03/28 9325
162594 [질문] 노트북 구매하려 합니다. 도움 좀 부탁드립니다. [1] 색마4693 22/03/26 4693
162570 [질문] 홈페이지를 웹뷰 어플로 제작하려고 합니다(플레이스토어 목표) [1] 엔쏘2636 22/03/25 2636
161684 [질문] 밥솥중에 스텐내솥은 어디가 좋나요? 바람의바람6173 22/02/11 6173
161638 [질문] fast campus 어떤가요? [12] 주식을마시는새6014 22/02/09 6014
161569 [질문] 취미이지만 진지하게 코딩을 배워 보고 싶습니다. [6] GoThree8615 22/02/06 8615
161528 [질문] 컴퓨터 견적 질문드립니다. [8] Su A5184 22/02/04 5184
161380 [질문] 컴퓨터 비전공자가 입문하기 좋은 코딩 및 머신러닝 교육컨텐츠에 어떤게 있을까요? [9] daftpunk7168 22/01/27 7168
160829 [질문] 코딩을 깔끔하게 하는 비법이 있을까요? [14] 멋진신세계8595 22/01/02 8595
160643 [질문] 파이썬 코딩 질문드립니다. [8] 민트초코우유8460 21/12/26 8460
160405 [질문] 아이폰 단축어 앱에서 도로명 주소를 가져오는 방법 [3] 허느7123 21/12/17 7123
목록 이전 다음
댓글

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