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
수정 아이콘
덕분에 질문 이상으로 더 배워갑니다~!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
160648 [질문] M1 맥북 에어 어디서 사야 저렴할까요? [3] 아비치6683 21/12/26 6683
160647 [질문] 닌텐도 스위치 포켓몬스터 질문입니다. [5] Jane6400 21/12/26 6400
160646 [질문] 게임 <헬리시 쿼트> 하시는 분 계신가요? Love.of.Tears.7862 21/12/26 7862
160645 [질문] 드라마 지옥에서 동욱 행동에 궁금한 점 [5] 탈모인 베지터6221 21/12/26 6221
160644 [질문] 콧털정리기 사용하시고 계신분 있으신가요? [15] BlueSKY--7200 21/12/26 7200
160643 [질문] 파이썬 코딩 질문드립니다. [8] 민트초코우유7439 21/12/26 7439
160642 [질문] 닌텐도 스위치 게임 추천 부탁드립니다(2인플) [11] 노젓는뱃사공9676 21/12/26 9676
160641 [질문] XBOX Series X 는 PC 로 치환하면 어느 정도 사양인가요? [6] 나혼자만레벨업8577 21/12/26 8577
160640 [질문] 근육의 회복 속도를 빠르게 하는 훈련이 있나요?? [20] 회색사과7142 21/12/26 7142
160639 [질문] amd 5600g 플루이드 모션 설정이 되지 않습니다!!! [2] 김치맨9314 21/12/26 9314
160638 [질문] 영상편집 관련해서 질문드립니다 (Movavi) 헛스윙어6252 21/12/26 6252
160637 [질문] 다이슨 에어랩을 구매하려고 합니다. [3] 오이자왕9291 21/12/26 9291
160636 [질문] 레노버 크롬북 듀엣에 엑시엑용 패드가 안붙네요.. [2] 스타본지7년6230 21/12/26 6230
160635 [질문] 할인찬스네요. 스팀 게임 추천 받습니다. [14] 연애잘합니다7873 21/12/26 7873
160634 [질문] 고속버스 택배 이용해 보신분 계신가요? (제로데이퀵) [3] StondColdSaidSo6781 21/12/26 6781
160633 [질문] 덴젤 워싱턴 영화 추천 부탁드려요 [9] seotaiji6930 21/12/26 6930
160632 [질문] "어질어질해"란 유행어 에 대해서 궁금합니다. [4] PLANTERS7694 21/12/26 7694
160631 [질문] 명품을 사는 이유가 어떻게 되시나요? [30] 푸끆이13394 21/12/26 13394
160630 [질문] 가짜밍크목도리 물세탁해도 될까요? 기술적트레이더6261 21/12/26 6261
160629 [질문] 핸드폰 외장메모리 자료 빨리 옮기는 팁 없을까요? [6] Arya Stark5799 21/12/26 5799
160628 [질문] [오디오] pc 헤드폰 및 블루투스 세팅에 관하여 [4] 리듬파워근성9720 21/12/26 9720
160627 [질문] 정규 계약직은 어떤 고용형태를 말하는 건가요? [4] KOZE7320 21/12/26 7320
160626 [질문] 그래픽카드 설정 질문드립니다. [1] 스핔스핔8328 21/12/26 8328
목록 이전 다음
댓글

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