https://fastcampus.co.kr/courses/213915
커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스
성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.
fastcampus.co.kr
연속형 데이터 ( Sequential Data Types )
1. 리스트 ( List )
리스트의 원소는 쉼표로 구분할 수 있으며, 리스트의 원소는 아무 데이터 타입이나 가능하다.
리스트 내부 리스트도 가능하다.
1) Indexing
리스트 내부 원소를 찾기 위해서는 Indexing 이라는 방법을 사용한다.
예를들어 [ -1, 45, 5, [19,91], Apple ] 이라는 리스트가 있는데 해당 리스트의 첫번째 원소, 또는 마지막 원소를 찾아내고 싶으면 아래와 같은 방법을 사용할 수 있다.
L[0] -> -1
L[2] -> 5
그렇다면 마지막에 있는 원소를 찾고싶다면 어떻게 해야할까?
L[-1] -> Apple
L[-2] -> [ 19,91 ]
위와같이 음수값을 넣어주면 뒤에서부터 N번째의 원소값이 출력된다.
아래와같이 리스트 Indexing을 이용한 사칙연산도 가능하다.
L[0] + L[2] -> 4
그리고 List 안에 있는 다른 List의 원소를 찾고싶다면 어떻게 해야할까?
흔히 알고있는 C언어의 배열(2차원배열)을 생각하면 쉽다.
일단 그냥 L[3]을 그대로 출력하면 [19,91]이 출력되는데 이 중에 첫번째 원소를 찾고싶다면
L[3][0], L[3][1] 과같은 방법을 사용하면 된다.
L[3][0] -> 19
L[3][1] -> 91
2) Slicing
슬라이싱은 리스트의 일부분만 잘라서 사용한다는 뜻으로 사용되고있다.
리스트의 일부만 사용할 때 쓰는 방법이다.
예를들어 L[1,2,3,4,5] 라는 리스트가 있을 때 L[0:2] 라고 슬라이싱을 하면
1,2,3이라는 값이 나올 것이라는 걸 예상할 수 있다.
하지만 위와같은 예상은 아쉽지만 틀렸다.
마지막에 나오는 슬라이싱번호의 -1까지의 인덱스가 추출된다 라고 알고있는 것이 편하다
그럼 L[1:4] 는 몇이 나올까?
2,3,4 그 이유는 인덱스번호4는 원소5에 해당하고 인덱스의 -1이니 4까지만 출력되는 것이다.
시작 Index를 생략하면 시작 Index는 자동으로 0이 된다.
L[:3] -> 0,1,2 와같이 인덱스의 개수만큼(?) 나오는 것 처럼 느껴질 수 있다.
끝 Index를 생략하면 끝 Index는 자동으로 리스트의 길이가 된다.
L[1:] -> 2,3,4,5 와 같이 Index의 길이가 자동으로 입력되어 결과값이 나온다.
그런데 여기서 헷갈리는 것이 아까 말했던 것 처럼 모두 적으려고 L[1:4]라고 하는 순간 2,3,4와같이
인덱스 -1된 값이 추출된다는 것을 헷갈리지 말아야 한다.
* 리스트의 Indexing, Slicing은 다른 데이터타입에도 동일하게 적용된다.
예를들어 문자열에서도 사용할 수 있다.
S = "Hello"
S[3] -> l , S[1] -> e ....
S[1:3] -> el , S[:3] -> Hel , S[0:] -> Hello ....
3) 리스트 연산
리스트의 연산은 우리가 알고 있는 일반 연산과는 약간의 차이가 있다.
그런데 C언어와 비교해보면 정말 너무나도 쉽게 되어있다.
* 리스트 더하기
L1[1,2] + L2[3,4,5] 라는 값을 계산해보면 [1,2,3,4,5] 라는 결과값이 나오게 되는데
이를 반대로 L2+L1으로 할 수 도있다. 결과값은 [3,4,5,1,2] 로 나오게 된다.
C언어에서는 배열을 합치기 위해서는 복잡하게 for문을 이용하거나 copy라는 함수, 또 다른 함수들을
이용해야 하는데 Python에서는 이런 복잡한 것이 없다는게 참으로 좋은 것 같다.
* 리스트 수정하기
L1[1,2,3,4,5] 를 L[3] = 5로 코딩해놓으면 다음에 적용되는 코드부터는
L1[1,2,3,5,5] 의 리스트를 사용할 수 있다.
4) 리스트 관련 함수
* append()
L = [] 빈 리스트를 먼저 만들고
L.append(1), L.append(2), L.append(3) ...으로 추가하게 되면 순서대로!
빈 리스트에 추가가 되어 L[1,2,3]으로 리스트가 완성이 되는 것을 확인할 수 있다.
* insert()
기존 L = [1,2,4] 이라는 리스트에서 3을 중간에 넣고싶을 때
L.insert(2,3) 이라는 insert함수를 사용하게 되면 2번째 인덱스에 3을 넣겠다는 의미로 사용되어
L = [1,2,3,4]가 완성되는 것을 확인할 수 있다.
*sort()
위 함수명 그대로 리스트에 있는 원소들이 오름차순으로 정렬이 된다.
그런데 여기서 내림차순으로 하고싶으면 어떻게 하면 될까?
L.sort(reverse= True) 라는 매개변수에 있는 reverse를 활용해주면 된다.
*remove(), pop()
위 2개의 함수 모두 리스트에 있는 원소를 제거하는 방법이지만
remove는 지우고싶은 원소자체를 매개변수에 넣는 방법이고
pop은 지우고싶은 원소인덱스를 매개변수에 넣어 해당인덱스에 있는 원소를 제거하는 방법이다.
예를들어 L = [1,2,3,4,5] 에서 L.remove(3) 나 L.pop(2) 나 같은 의미인 것이다.
( pop은 변수를 채워넣지 않으면 가장 뒤에있는 원소가 제거된다. 하지만 remove는 동작하지 않는다.)
2. 튜플 ( Tuple )
리스트와 튜플은 거의 같다. Indexing, Slicing도 동일하게 사용할 수 있다.
다른점은 단 2가지가 있다.
첫번째로, 리스트는 대괄호 [] 를 사용하고 튜플은 () 소괄호를 사용한다는 것.
두번째로, 리스트는 생성 후에 변경이 가능하고, 튜플은 생성 후에 변경이 불가능 하다는 것
리스트는 Mutable(생성 후 자유로운 데이터 수정) 데이터타입,
튜플은 Immutable(생성 후 변경불가능한 데이터 수정 ) 데이터타입이라고 부른다.
따라서 튜플을 강제로 변경하려고 한다면
t = (1,2,3,4,5)
t[3] = 6 으로 한다면 에러가 발생한다.
따라서 리스트와 튜플은 데이터 변경이 불가능한 것을 제외하고는 모두 동일하다고 생각하면 된다.
'Program > 파이썬' 카테고리의 다른 글
[Python] 반복문 ( for ) (0) | 2023.01.07 |
---|---|
[Python] 반복문 ( While ) (0) | 2023.01.07 |
[Python] 조건문(If) (0) | 2023.01.06 |
[Python] 사전(Dictionary) (0) | 2023.01.04 |
[Python] 집합(Set) (0) | 2023.01.03 |