PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2018/04/17 22:31:34
Name Patrick Jane
Subject [질문] 파이썬 리스트 질문입니다.
안녕하세요. 파이썬으로 코드 작성중에 이상한 부분이 있어서 질문드립니다.
제가 현재 만든 리스트는 다음과 같습니다.

vir_map=[[int(x) for x in input().split()] for _ in range(n)]
이렇게 넣어서 모양은 대충 [[1,2,3],[3,4.5]] 이런식으로 되어있습니다.

리스트를 잠깐 복사해서 특정부분을 변경해서 값을비교하고, 다시 원래 vir_map를 복사해서 b를 변경해보고 하는 로직을 만들었습니다.
그런데 복사를 해보니 복사한 리스트에서 변경을 가하면 원본리스트에도 변경이되더라구요..

그래서 구글검색결과 temp_map=vir_map[:] 또는 temp_map=copy.copy(vir_map) 또는 temp_map=list(vir_map)를 사용하라고 하더라구요;
그래서 세가지를 다 적용해봐도 그대로 복사한 리스트를 변경하면 원본리스트가 변경됩니다.

어떻게해야 value만 복사해올 수 있을까요? 파이썬 고수님들 도와주세요!

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
테트리스
18/04/17 22:37
수정 아이콘
얕은 복사가 이뤄져서 그런것 같네요! copy 모듈 활용하셔서 깊은 복사하시면 될것 같아요!
Patrick Jane
18/04/17 22:39
수정 아이콘
copy.copy(vir_map)을 해도 똑같습니다 ㅠㅠ엉엉
테트리스
18/04/17 22:40
수정 아이콘
copy.deepcopy(vir_map)으로 해보셨나요?
Patrick Jane
18/04/17 22:43
수정 아이콘
deepcopy를 하니까 정상적으로 되네요 ㅠㅠ 감사합니다. 해당 모듈좀 찾아봐야겠네요. python3 에서는 해당모듈말고는 value만 복사해오는 방법은 따로없나요?
Phlying Dolphin
18/04/17 23:11
수정 아이콘
해 보진 않았지만... 직접 construct하는 방법도 있겠죠.
vir_map1=[[int(x) for x in input().split()] for _ in range(n)]
vir_map2=[[int(x) for x in input().split()] for _ in range(n)]

또는
vir_map2=[[x for x in submap] for submap in vir_map] 식으로...

무작위 깊이로 복사한다면, yield 구문을 활용하면 될 겁니다. 예전에 dictionary update 모듈 만들 때 비슷한 방법을 사용했어요. 아마 deepcopy도 뜯어 보면 비슷한 알고리즘일 것 같습니다.
Patrick Jane
18/04/17 23:18
수정 아이콘
저런 방법도 있군요 ㅠㅠ 문법책좀 더 들여다봐야할거 같아요 ㅠ 감사합니다!
포포탄
18/04/17 22:43
수정 아이콘
파이썬의 딕셔너리와 리스트는 참조형식으로 값을 복사합니다.(주소복사)
copy.deepcopy(things) 형식으로 복사하셔야 합니다.
Patrick Jane
18/04/17 22:49
수정 아이콘
감사합니다!!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
118810 [질문] 제조사 별 1060 6GB 비교 질문드려요. [12] 하얀사신5283 18/04/18 5283
118809 [질문] 호감있는 연상의 여자에게 어떤 호칭 써야하나요??? [34] 삭제됨16103 18/04/18 16103
118808 [질문] 식사 시간도 휴식으로 치나요? [12] TheLasid3371 18/04/18 3371
118807 [질문] 서울에 있는 도서관 추천해주세요!! [5] LtD2825 18/04/18 2825
118806 [질문] 영화 이끼 질문입니다. [6] 완성형폭풍저그2883 18/04/18 2883
118805 [질문] 중국 여행지 추천 부탁드립니다 [10] 애플2073 18/04/18 2073
118804 [질문] WWE 선수들 힘(완력)으로 줄 세우면 탑10은? [15] 샤르미에티미3765 18/04/18 3765
118803 [질문] 속초 여행을 갈까 하는데, 관광지나 맛집 추천 부탁드립니다. [20] 저글링앞다리4553 18/04/18 4553
118802 [질문] 이거 석면인가요? [6] 더 잔인한 개장수3001 18/04/18 3001
118801 [질문] KBS 구내식당 외부인도 이용 가능한가요? [2] 미뉴잇6658 18/04/18 6658
118800 [질문] 낚시카페 다녀와 보신 분 있나요 [4] [PS4]왕컵닭1987 18/04/18 1987
118799 [질문] 헤어지거나 차이거나 했을때의 감정이 무었일까요? [15] EY3559 18/04/18 3559
118798 [질문] 퇴직금을 어떻게 운영해야 할까요? [2] 혜정은준아빠2772 18/04/18 2772
118796 [질문] 제 생각이 이기적인 생각인지 알고 싶습니다. [37] 우메보시4815 18/04/18 4815
118794 [질문] 휴대폰 액정 상단바 아래 색깔이 변하는 거 갤럭시만 이러나요? [18] FRONTIER SETTER8051 18/04/18 8051
118793 [질문] 대장내시경 걱정이 많습니다.. [14] 자몽2988 18/04/18 2988
118792 [질문] 신혼여행 추천 부탁드립니다! [42] 골든해피4409 18/04/18 4409
118791 [질문] Asl 이번 시즌 맵 토스 괜찮지 않나요? [17] 성동구3076 18/04/18 3076
118790 [질문] [lol]팀운을 객관적으로 알수있는 방법이 있나요? [23] 주전자9493 18/04/18 9493
118789 [질문] 태블릿PC 추천부탁합니다 [3] 기희현2779 18/04/17 2779
118788 [질문] 연봉 협상 관련 인사과 분들의 조언이 필요합니다. [17] 시즈플레어4734 18/04/17 4734
118787 [질문] [lol] 탑 케일 질문입니다 [5] 치토스2356 18/04/17 2356
118786 [질문] 3월 24일 무도에 들어간 이 BGM 아시는 분? [2] 티티1784 18/04/17 1784
목록 이전 다음
댓글

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