겉바속촉
[PYTHON] 파이썬_리스트(연산, 슬라이싱, 에일리어싱) 본문
안녕하세요
겉바속촉입니다
!^^!
!!파이썬 시작하기!!
이번에는
리스트에 대해서 알아보도록 하겠습니다
리스트 중에서도
연산, 슬라이싱, 에일리어싱에 대해서 다룰게요
리스트 내 데이터 저장과 접근
- 대괄호로 표현하며 각각의 요소는 콤마로 구분
- 배열 개념과 비슷하게 접근하기!!!
- 빈 리스트 : 항목을 포함하지 않은 리스트 ---> 빈 리스트를 인덱스로 참조하면 당연히 오류 발생!!
- heterogeneous : 리스트는 어떤 데이터 타입이든 포함할 수 있음
--> 문자든 숫자든 상관 NONO 리스트 자체가 주소를 가지기 때문!! - typing 모듈을 포함시켜 리스트 내 값의 기대 타입을 명시
>>> from typing import List
>>> def average(L: List[float]) -> float:
- 리스트는 가변 mutable 객체 = 리스트 내용을 변경할 수 있음!!
- 수와 문자열은 불변 immutable
(실질적으로는 주소가 변경되는 것)
리스트 연산
- 여러가지 함수들
함수 | 설명 |
len(L) | 리스트 L 내 항목 수 반환 |
max(L) | 리스트 L 내 최대값 반환 |
min(L) | 리스트 L 내 최소값 반환 |
sum(L) | 리스트 L 내 합계 반환 |
sorted(L) | 항목을 오름차순으로 정렬한 리스트 L의 복사본 반환 |
L + L | 리스트 결합 |
L * number | 횟수만큼 반복 |
del L | 리스트 항목을 삭제 |
- in 연산자 : 어떤 객체가 리스트에 들어 있는지 확인
문자열에서는 여러가지 항목을 확인 할 수 있지만
리스트에서의 in연산자는 문자열과 달리 항목 한가지만 확인 가능
안그러면 false라고 뜹니다!!
input 함수와 in 연산자 활용한 예시!!
*********참고*********************************
OOO is noble. 형식의 출력
>>> for noble in nobles:
... print(noble, 'is noble.')
... print('{} is noble.'.format(noble))
... print(f'{noble} is noble.')
... print('%s is noble.' %noble)
************************************************
리스트 슬라이싱
- list[ i : j ] --> 원래 리스트의 인덱스 i 부터 j 전 까지 새로운 리스트 생성
에일리어싱
- 에일리어싱 : 두 변수의 메모리 주소가 같은 경우
두 변수가 동일한 주소를 가리키는 경우
-> 그래서 원래 것을 고치면 새로운 것에서도 항목 변화
-> 또한 새로운 것에서 고치면 원래 것에서도 항목 변화
리스트를 매개변수로 사용할 때도 에일리어싱이 발생
예시를 우선 볼게요:)
제가 다음과 같이 함수 하나를 생성했습니다.
리스트의 마지막 항목을 없애고 나머지 항목들이 리스트로 출력되게 하는 함수에요:)
L 이라는 곳에 rainbow 리스트를 넣어 매개변수로 사용하겠습니다.
그러면 rainbow 가 가리키는 주소를 L 도 동일하게 가리키게 됩니다.
그래서 리스트 변수은 L 을 조작하면 rainbow 역시 동일하게 조작이 되는 것!!!
여기서 드는 의문 --> 함수 마지막에 return 문이 꼭 필요할까??? NONONO
--> 어차피 리스트가 동일한 곳을 가리키는 데 굳이 변수를 리턴할 필요는 없겠쥬!
리스트 메서드
- 새로운 리스트를 생성하지 않고 리스트를 수정 = None을 반환: clear, reverse, sort, pop, ... (pop은 값을 반환)
- copy 메소드 (L : [ : ] 와 동일) 는 list를 반환 --> 아래 비교하는 예시들 참고!!
비교1)
a 리스트와 동일한 내용을 가지는 (새) 리스트를 반환
a 리스트의 값을 변경해도
b 리스트에 영향을 미치지 않음
a와 b가 다른 주소를 가지고 있는 것을 확인할 수 있음 --> 에일리어싱과 차이점
비교2)
a와 b가 동일한 리스트의 주소를 공유
a 리스트의 값을 변경하면
b 리스트에도 반영
비교3)
b는 a를 슬라이싱
id로 확인해보면 새로운 리스트가 만들어짐을 알 수 있다.
'IT 일기 (상반기) > PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬_루프 코드 반복 (리스트, 문자열, 수) (0) | 2021.01.05 |
---|---|
[PYTHON] 파이썬_리스트(리스트메서드, 중첩리스트) (0) | 2021.01.05 |
[PYTHON] 파이썬_메서드 (0) | 2021.01.05 |
[PYTHON] 파이썬_테스트 케이스 실행해보기 (0) | 2021.01.05 |
[PYTHON] 파이썬_모듈화 방식 (0) | 2021.01.05 |