1. slice 객체를 활용하여 여러 squence객체를 슬라이스하기
slice 객체는 시작, 끝, 인덱스 증가폭을 가지는 객체로, 잘라내고 싶은 부분을 지정해두는 것과 비슷한 느낌으로 사용된다.
slice 객체를 지정해두면, 해당 객체의 정보를 이용하여 다른 sequence의 내용물을 슬라이스할 수 있다.
예를들어
List = [1,2,3,4,5,6,7,8,9,10]
Tuple = (1,2,3,4,5,6,7,8,9,10)
Range = range(10)
String = “Always Awake”
라는 각각 다른 종류의 네 시퀀스객체가 존재 한다고 하자.
이 각각의 시퀀스 객체에 대하여
인덱스 2번부터 8번까지중 한 칸씩 건너뛴(증가폭 2를 가진) 요소들만 슬라이스하여 새로운 객체들을 만들고싶다.
그러면 아래와 같이 하면 된다.
S = slice(2,8,2)
print(List[S])
print(Tuple[S])
print(Range[S])
print(String[S])
결과는 다음과 같다.
[3,5,7]
(3,5,7)
range(2,8,2)
‘ly ‘
2. 슬라이스로 요소를 바꿀 때, 새로 넣으려는 요소와 원래 있던 요소 개수가 일치해야하는가?
시퀀스 객체에 인덱스 증가폭을 적용하지 않은 슬라이스로 요소를 할당할 때는 슬라이스 범위의 요소 개수와 할당할 요소 개수가 달라도 가능하다.
그러나 인덱스 증가폭을 지정한 슬라이스를 했을 경우 범위 요소의 개수와 할당 요소의 개수가 일치해야한다.
즉, 다음과 같다.
a = [1,2,3,4,5,6,7,8,9]
b = [1,2,3,4,5,6,7,8,9]
a[2:8] = [100,101,102,103]
#(인덱스 지정하지 않았으므로 가능 - 슬라이스 요소 개수 6개 != 할당할 요소 개수 4개)
a[2:8:2] = [100]
#(인덱스 지정 했으므로 불가능 - 슬라이스 요소 개수 3개 != 할당할 요소 개수 1개)
3. 딕셔너리에서 키의 중복여부
딕셔너리에서 키 이름이 중복되었을 경우, 호출 시에 딕셔너리는 가장 마지막 키의 값만을 불러온다.
즉, 키는 중복 저장 되지 않는다. 마지막 이전의 키들은 전부 저장되지 않고 사라진다.
a = {"Health":100 , "Health":200 , "Mana":100}
print(a)
위 코드의 결과는
{'Health': 200, 'Mana': 100}
4. dictionary의 키값쌍 순서 유지 여부
python 3.5까지는 dictionary의 키값쌍 순서가 유지되지 않았다.
그러나 python 3.6 부터는 키값쌍의 생성 순서에 따라 인덱스가 정해져있게, 즉 순서가 정해져 있게 되었다.
만약 3.5이하의 python에서 쌍의 순서를 유지하고싶다면 collections 모듈의 orderedDict를 사용하자.
'Always Awake > python 기본 정리(19.12.23~20.01.12)' 카테고리의 다른 글
20.01.12 기록 (0) | 2020.01.13 |
---|---|
20.01.09 정리 (0) | 2020.01.09 |
20.01.05 기록 (0) | 2020.01.06 |
19.12.26 기록 (0) | 2019.12.27 |
19.12.25 기록 (0) | 2019.12.26 |
댓글