본문 바로가기
Base/Python

5. 수열/배열/리스트

by 귀멸 2023. 2. 9.

혼공파 26 ~ 28강

 

1. 반복문과 함수가 어려운 이유

익숙하지 않은 코드 흐름

수학을 잘 모르는 사람들(고등학교까지의 수학)


2. 수열, 배열, 리스트 기본

# 수열

"가나다라" # 문자들이 일렬로 나열된 것 : 문자열

1 2 3 4 # 숫자들이 일렬로 나열된 것 : 수열

항 : 수열의 요소

길이 : 수열 요소의 수

유한 수열 : 길이가 유한한 수열

무한 수열 : 길이가 무한한 수열

 

# 배열 : 길이가 고정

[10, 10.0, "가나다", True]

0-index : a0, a1, a2, a3 [파이썬]

1-index : a1, a2, a3, a4 [루아]

 

# 리스트 : 배열에 요소 추가/제거 등의 기능을 추가한 것

 

a = [123, "abc", True]
print(a[0])      # 123
print(a[1])      # abc
print(a[2])      # True
print(a[0:1])    # [123]
print(len(a))    # 3

# 리스트 반대로 돌리기
"abcde[::-1]"

print([1, 2, 3, 4, 5][::-1])  # [5, 4, 3, 2, 1]

# 중첩 리스트
b = [a, a, a]

c = [[1, 2, 3], [4, 5], [6, 7]]

c[0]        # [1, 2, 3]
c[0][1]     # 2

3. 리스트의 함수

# 파괴적이다    : 연산 후에 피연산자가 변형되는 것
# 비파괴적이다 : 연산 후에 피연산자가 변형되지 않는 것
## 비파괴적연산은 원본도 남기고 연산 결과도 남기기 때문에 안전하지만 메모리를 많이 차지한다.
## 리스트는 크기가 클 가능성이 높으므로, 비파괴적으로 원본과 결과를 남기기에는 메모리 용량 압박이 심하다.

     따라서 리스트 관련 함수는 요소의 존재를 확인하는 연산자 이외에는 모두 파괴적 연산이다.

# 요소 추가 : append(), insert(), extend()
a = [1, 2, 3, 4]
a.append(10) # 가장 마지막에 요소를 하나 추가
print(a)    # [1, 2, 3, 4, 10]
a.insert(0, 20) # 원하는 위치에 요소를 하나 추가
print(a)    # [20, 1, 2, 3, 4, 10]
a.extend([5, 6, 7, 8]) # 가장 마지막에 요소를 여러 개 추가
print(a)    # [20, 1, 2, 3, 4, 10, 5, 6, 7, 8]
  # 리스트 연결 연산자 + 는 extend() 함수와 동일하게 작용하지만
  # 비파괴적이다.
# a = a + [5, 6, 7, 8]

# 요소 제거 : del, pop(), remove(), clear()
a = [1, 2, 3]
del a[0]      # 제거하고 싶은 인덱스 입력
print(a)      # [2, 3]
a.pop(0)      # 제거하고 싶은 인덱스 입력(기본값 -1)
print(a)      # [3]
a.remove(3)   # 제거하고 싶은 요소를 입력
print(a)      # []
a.clear()    # 모든 요소를 제거
print(a)      # []

# 요소 정렬 : sort()
a = [52, 273, 1, 7, 9, 103, 58, 201]
a.sort()
print(a)   # 오름차순으로 출력
a.sort(reverse=True)
print(a)   # 름차순으로 출력

# 요소 존재를 확인 : in, not in
print(52 in a)      # True
print(0 in a)       # False
print(52 not in a)  # False

 

댓글