본문 바로가기

slice

파이썬 클린 코드 - 2장 (Pythonic code) 1. 인덱스와 슬라이스 >>> numbers = (1, 1, 2, 3, 5, 8, 12, 21) >>> my_numbers[1:7:2] 위와 같이 시퀀스에 간격을 전달할 때 실제로는 슬라이스를 전달하는 것과 같다. slice 는 파이썬 내장 객체로 직접 빌드하여 전달할 수도 있다. >>> interval = slice(1, 7, 2) >>> numbers[interval] (1, 3, 8) >>> interval = slice(None, 3) >>> numbers[interval] = numbers[:3] True slice 의 (시작, 중지, 간격) 중 하나를 지정하지 않은 경우 None 으로 간주한다. 튜플, 문자열, 리스트의 특정 요소를 가져오려고 한다면 for 루프를 돌며 수작업으로 요소를 선택하.. 더보기
슬라이스와 범위 지정 시에 마지막 항목이 포함되지 않는 이유 파이썬에서 인덱스를 활용한 슬라이싱을 사용하는 경우 list[start:end] 같이 표현한다. 이 때, start 부분은 포함되지만 end 부분은 포함되지 않는다. 이에 대하여 네덜란드 컴퓨터 과학자 다익스트라는 다음과 같은 이유를 들었다. 범위의 맨 앞 혹은 맨 뒤 값은 반드시 포함해야 한다. 우선 반드시 이상/미만 혹은 초과/이하 형태여야 한다. 그래야 두 수의 차를 통해서 몇 개의 값이 들어있는지 직관적으로 알 수 있다. 그럼 그 형태가 왜 꼭 이상/미만이어야 하는가? 시작점이 포함되어야 하는 이유? 만약 자연수의 범위를 표현하고자 할 때, 초과인 경우 최소 자연수인 1을 포함시키기 위해서 0초과 n이하으로 표현해야 한다. 이 때, 자연수가 아닌 수를 통해서 자연수의 범위를 표현하는 부자연스러운 .. 더보기