코드 뜻을 잘 모르겠어요
315
작성한 질문수 8
c[1:2] = ['a', 'b', 'c'] 이 코드를 한국말로 풀어 설명하면 어떻게 되나요?
c의 1번째(두번째) 값부터 1개의 값을 []로 변경하라 이건가요?
그래서 결국에는 2번째 값을 []로 변경하라는 건가요?
답변 2
2
재미있는 기법을 배워가네요.
sykb7000님도, 이미 테스트해보셔서 아시겠지만^^;
그래서 결국에는 2번째 값을 []로 변경하라는 건가요?
① 위 말씀대로c[1] = ["a", "b", "c"]
라고 입력해버리면, 결과는[1, ['a', 'b', 'c'], 3, 4, 5]
가 됩니다. (2중 리스트이고, 우리가 의도했던 결과가 아니지요.)
② 그런데 범위 인덱싱을 통해서c[1:2] = ["a", "b", "c"]
라고 명령어를 입력하면 그 때의 결과는[1, 'a', 'b', 'c', 3, 4, 5]
가 됩니다. 너무 편하네요ㅎㅎ
한 술 더 떠서 이렇게도 가능하네요?
c = [1, 2, 3, 4, 5]
a = ["a", "b", "c"]
c[1:1] = a
print(c)
>>> [1, "a", "b", "c", 2, 3, 4, 5]
재미있는 트윅이네요.
왜냐면 리스트 특정 인덱스 위치에 리스트를 삽입할 때
보편적으로 list.insert를 사용하지만,
②의 케이스처럼 flatten하게 삽입되지 않고,
①의 케이스와 동일하게 삽입되기 때문입니다.
이중리스트를 flatten 하게 만들려면 아래처럼 번거롭게 itertools를 이용하거나
리스트컴프리헨션이나, lambda, reduce 같은 기법을 써야 하거든요..
>>> c = [1, 2, 3, 4, 5]
>>> a = [1, 2, 3]
>>> c.insert(3, a)
>>> print(c)
[1, 2, 3, [1, 2, 3], 4, 5]
>>> import itertools
>>> print(list(itertools.chain.from_iterable(c)))
[1, 2, 3, 1, 2, 3, 4, 5]써먹을 곳이 많은 팁이네요.
인스턴스 변수 문의
0
37
1
챕터 03_04 (튜플) 교육자료
0
35
2
Package(3-1) Sub 폴더 자료
0
36
1
아톰 출력 안됨
0
66
2
강의자료 메일 발송 요청 드립니다.
0
76
1
강의자료 메일로 보내주실 수 있으실까요?
1
53
0
Iterable 요소는 리스트로 작성해야하는 것 맞나요?
1
77
2
강의자료 부탁드립니다
0
63
2
if Flase: print('Bad')
0
60
1
=와 == 의 차이
0
77
1
functions 함수 섭들을려고하는데요
0
67
1
강의자료 부타드리겠습니다!
0
58
0
VSCODE에 VIEW에서 SELECTED INTERPRETER조회가 안됩니다.
0
65
1
강의자료 부탁드립니다.
0
52
0
dict의 Key를 바꾸는 방법
0
66
1
강의자료부탁드립니다
0
61
1
run withount 디버깅 및 F5+ctrl이 안먹혀요
0
61
1
강의 자료와 예정 다운로드
0
74
2
객체지향 vs 함수형
0
60
1
어렵네요 설정도
0
84
1
설정이 잘 된건지
0
51
1
맥 os vscode 설정 - python interpreter select
0
104
1
강의자료 부탁드립니다. mytoughgirl@naver.com 입니다.
0
46
1
vscode로 수업 진행한 영상은 없는건가요?
0
57
2





