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
수정 아이콘
감사합니다!!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
134239 [질문] 첫 차 구매경로 [8] patrick Jane2973 19/06/08 2973
131800 [질문] 업무용 마우스 추천해주세요! [7] patrick Jane3196 19/03/29 3196
131203 [질문] 유산균 추천 부탁드립니다! [10] patrick Jane3697 19/03/11 3697
130872 [질문] [lol] 케릭터 빨리얻는 방법이있나요? [10] patrick Jane14970 19/03/02 14970
129770 [질문] 20대 카드추천 부탁드립니다! [6] patrick Jane2562 19/01/29 2562
128569 [질문] 스카이캐슬(드라마) 질문입니다.(혹시모를 스포조심) [10] patrick Jane5333 18/12/26 5333
124647 [질문] 파이썬 문자변환 질문입니다. [3] patrick Jane1569 18/09/12 1569
124480 [질문] 그림그리기 적당한 장비 추천드립니다 [3] patrick Jane2419 18/09/06 2419
121896 [질문] 비오는날 야외주차 [10] patrick Jane5357 18/07/02 5357
119981 [질문] 오야가자는 무슨말인가요? [15] patrick Jane10118 18/05/15 10118
118783 [질문] 파이썬 리스트 질문입니다. [8] patrick Jane1721 18/04/17 1721
118566 [질문] c#책 추천해주세요! [4] patrick Jane4726 18/04/12 4726
115566 [질문] 결혼하려면 보통 얼마나 드나요? [25] patrick Jane6432 18/02/01 6432
113897 [질문] 프로그래밍 실력을 늘리는 법은 뭘까요? [36] patrick Jane12237 17/12/28 12237
112891 [질문] 컴퓨터 고장 질문드립니다! [4] patrick Jane1592 17/12/06 1592
111291 [질문] a^p mod n을 구하는 빠른방법있을까요? [5] patrick Jane2000 17/11/02 2000
110190 [질문] 배치프로그래밍 질문입니다. [5] patrick Jane1599 17/10/11 1599
110123 [질문] 톰켓 설정질문입니다 patrick Jane1040 17/10/10 1040
105927 [질문] Netflix 볼만한거 추천 부탁드려요 [20] patrick Jane4092 17/07/18 4092
104946 [질문] 대학원진학 질문입니다! [21] patrick Jane8693 17/06/29 8693
103768 [질문] 자바빈 질문입니다! (javabean) [4] patrick Jane1976 17/06/06 1976
103308 [질문] jquery 이용한 달력질문입니다! [7] patrick Jane4081 17/05/28 4081
103251 [질문] 남자선크림 추천 부탁드립니다. [8] patrick Jane3726 17/05/27 3726
목록 이전 다음
댓글

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