2023. 10. 23. 15:11ㆍ프로그래밍 공부/Python
4.1 리스트 구조
4.1.1 리스트란?
리스트(list): 선형 데이터 구조이므로, 그 원소는 선형 순서를 갖는다
| 0 | 68.8 |
| 1 | 70.2 |
| 2 | 67.2 |
| 3 | 71.8 |
| 4 | 73.2 |
| 5 | 75.6 |
| 6 | 74.0 |
Indexed Data
structure daily_temperature
4.1.2 일반적인 리스트 작업
검색(retrieve), 업데이트(update), 삽입(insert), 제거(remove) 및 추가(append)
4.1.3 리스트 순회
리스트 순회(list traversal): 리스트의 원소에 일일이 접근하는 수단
4.2 리스트(시퀀스) in 파이썬
4.2.1 파이썬 리스트 유형
Python 리스트의 특징
1) 가변 선형 데이터 구조이다.
2) 대괄호 안에 있는 원소의 쉼표로 구분된 목록으로 표시된다.
3) 혼합형 원소를 허용한다.
리스트의 예시
[1, 2, 3] ['one', 'two', 'three'] ['apples', 50, True]
빈 리스트: 빈 대괄호 쌍 []으로 표시된다.
리스트의 원소는 대괄호 안의 색인 값을 사용하여 접근한다.
lst = [1, 2, 3]
lst[0] ➝ 1 access of first element
lst[1] ➝ 2 access of second element
lst[2] ➝ 3 access of third element
리스트 수정 작업
| 작업(Operation) | fruit = ['banana', 'apple', 'cherry'] | |
| 대체(Replace) | fruit[2] = 'coconut' | ['banana', 'apple', 'coconut'] |
| 삭제(Delete) | del fruit[1] | ['banana', 'cherry'] |
| 삽입(Insert) | fruit.insert(2, 'pear') | ['banana', 'apple', 'pear', 'cherry'] |
| 추가(Append) | fruit.append('peach') | ['banana', 'apple', 'cherry', 'peach'] |
| 정렬(Sort) | fruit.sort() | ['apple', 'banana', 'cherry'] |
| 반전(Reverse) | fruit.reverse() | ['cherry', 'apple', 'banana'] |
4.2.2 튜플
파이썬 튜플(tuple)의 특징
1) 불변의 선형 데이터 구조이다.
2) 괄호 안에 있는 원소의 쉼표로 구분된 목록으로 표시된다.
3) 혼합형 원소를 허용한다.
리스트와 튜플의 차이점
1) 튜플은 한번 정의되면 리스트와 달리 변경할 수 없다.
2) 튜플의 원소가 한 개일 때 원소 뒤에 쉼표를 포함해야 한다. ex) (1,)
빈 튜플: 빈 괄호 집합()으로 표시된다.
4.2.3 시퀀스
시퀀스(sequence): 인덱스 값으로 접근하는 요소들의 선형 순서 집합.
시퀀스의 유형: 리스트, 튜플, 문자열
파이썬에서 시퀀스 작업
| Operation | String s = 'hello' w = '!' |
Tuple s=(1, 2, 3, 4) w=(5, 6) |
List s=[1, 2, 3, 4] w=[5, 6] |
|
| Length | len(s) | 5 | 4 | 4 |
| Select | s[0] | 'h' | 1 | 1 |
| Slice | s[1:4] s[1:] |
'ell' 'ello' |
(2, 3, 4) (2, 3, 4) |
[2, 3, 4] [2, 3, 4] |
| Count | s.count('e') s.count(4) |
1 error |
0 1 |
0 1 |
| Index | s.index('e') s.index(3) |
1 -- |
-- 2 |
-- 2 |
| Membership | 'h' in s | True | False | False |
| Concatenation | s + w | 'hello!' | (1, 2, 3, 4, 5, 6) | [1, 2, 3, 4, 5, 6] |
| Minimum Value | min(s) | 'e' | 1 | 1 |
| Maximum Value | max(s) | 'o' | 4 | 4 |
| Sum | sum(s) | error | 10 | 10 |
그 외 작업: find 메소드, == 연산자 등
4.2.4 리스트 중첩(Nested Lists)
목록과 튜플을 서로 중첩하여 임의로 복잡한 데이터 구조를 구성할 수 있다.
class_grades = [ [85, 91, 89], [78, 81, 86], [62, 75, 77], ...]
student1_grades = class_grades[0]
student1_exam1 = student1_grades[0]
class_grades[0][0] ➝ [85, 91, 89][0] ➝ 85
4.3 리스트(시퀀스) 반복 in 파이썬
4.3.1 For 루프
for 문: 지정된 요소 시퀀스의 각 요소에 대해 한 번씩 반복되는 반복 제어 문
for k in sequence:
suite
예시)
nums = [10, 20, 30, 40, 50, 60]
for k in nums:
print(k)
4.3.2 내장 함수 range
Python은 for loop이 반복할 수 있는 정수 시퀀스를 생성하는 데 사용할 수 있는 내장 함수 range를 제공한다.
시작값은 포함하고 끝값은 포함하지 않는다.
range(시작, 끝) 또는 range(시작, 끝, 간격) 의 형태이다.
ex) range(1, 6) -> [1, 2, 3, 4, 5]
ex) range(0, 6, 2)->[0, 2, 4]
4.3.3 리스트 원소 반복 vs. 리스트 인덱스 값 반복
| 시퀀스의 원소를 반복하는 루프 변수 | 시퀀스의 인덱스값을 반복하는 루프 변수 |
| nums = [10, 20, 30, 40, 50, 60] for k in nums: sum = sum + k |
nums = [10, 20, 30, 40, 50, 60] for k in range(len(nums)): sum = sum + nums[k] |
인덱스 변수: 색인화된 데이터 구조의 요소에 액세스하는 데 변경 값이 사용되는 변수
4.3.4 While Loops and Lists (Sequences)
주어진 조건이 참인 상태에서 시퀀스가 횡단되어야 하는 상황의 경우, while loop이 사용하기에 적합한 제어 구조이다.
예시)
k = 0
item_to_find = 0
found_item = False
while k < len(nums) and not found_item:
if nums[k] == item_to_find:
found_item = True
else:
k = k + 1
if found_item:
print('item found')
else:
print('item not found')
4.4 More on Python Lists
4.4.1 리스트 할당과 복사
변수가 목록을 보유한 다른 변수에 할당되면(list2 = list1) 각 변수는 결국 메모리에 있는 목록의 동일한 인스턴스를 참조하게 된다.
하지만 list2 = list(list1) 를 하면 각 변수는 메모리에 있는 목록의 다른 인스턴스를 참조하게 된다.
4.4.2 리스트 컴프리헨션(List Comprehensions)
Python의 리스트 컴프리헨션(List Comprehension)는 범위 함수에 의해 생성될 수 있는 것보다 더 다양한 시퀀스 집합을 생성하는 간결한 수단을 제공한다.
| Example List Comprehensions | Resulting List |
| (a) [x ** 2 for in [1, 2, 3]] | [1, 4, 9] |
| (b) [x ** 2 for in range(5)] | [0, 1, 4, 9, 16] |
| (c) nums = [ -1, 1, -2, 2, -3, 3, -4, 4] [x for x in nums for x >= 0] |
[1, 2, 3, 4] |
| (d) [ord(ch) for ch in 'hello'] | [72, 101, 108, 108, 111] |
| (e) vowels = ('a', 'e', 'i', 'o', 'u') w = 'hello' [ch for ch in w if ch in vowels] |
['e', 'o'] |