컬렉션 타입이란?
: 여러개의 자료구조를 하나의 단위로 관리할 수 있게 해주는 데이터 구조,
list, tuple, set, dict 등이 대표적인 컬렉션 타입에 속한다.
리스트(list)
그렇다면 list는 무엇일까?
list는 여러 값들을 하나의 변수에 저장하고 관리할수 있게 해주는 순차적인 자료 구조이다.
리스트를 표현하는 여러가지 방법들이 있는데,
1. 대괄호를 이용하는 방법,
ex) list1 = [ 'a', 1, 2.15, 'happy'] * 어떤 자료형이든 리스트 안에 들어갈 수 있다.
2. list함수를 써서 표현하는 방법이 있다.
ex) list2 = list([2, 4, 5, 8, 9, 10])
- list함수는 주로 다른 자료구조 형태를 list형태로 바꿀 때 많이 쓰인다.
list3 = [ '헬로우', 0, False, 3.33 ]
의 형태에서,
print(type(list3[0]))
print(type(list3[1]))
print(type(list3[2]))
print(type(list3[3]))
......
그 결과는 대충,
<class 'str'>
<class 'int'>
<class 'bool'>
<class 'float'>
이렇게 나옴으로써 인덱싱처리를 하여 타입 확인과,
리스트에 어떤 자료형이든 들어갈 수 있다는 점을 알 수있었다.
다차원 리스트 또한 확인할 수 있는데,
list4 = [1, 2, ['굿바이', '안녕'], '헬로우']
에서 ['굿바이', '안녕']의 타입을 알아보려면
print(type(list4[2]))
로 알아보면 되고,
'굿바이'의 타입만 알아보려면
print(type(list4[2][0]))
를 써서 확인 할 수 있다.
슬라이싱 또한 사용할 수 있다.
list5 = [2, 4, 6, 8, 10] 일 때,
print(list5[0:3])을 하면
값은
[2, 4, 6]
이 나오는 것을 확인할 수 있다.
슬라이싱을 이용하여 리스트 데이터를 추가한 경우와
인덱싱을 이용하여 요소를 추가한 경우가 서로 다른데,
list6 = [10, 20, 30, 40, 50]
list6[1:2] = ['😎','😊', '🤣']
print(list6)
[10, '😎', '😊', '🤣', 30, 40, 50]
list7 = [10, 20, 30, 40, 50]
list7[1] = ['😎','😊', '🤣']
print(list7)
[10, ['😎', '😊', '🤣'], 30, 40, 50]
이렇게
슬라이싱의 경우엔 리스트에 데이터만 포함되고,
인덱싱의 경우,
리스트 안에 리스트를 만들고 포함되는 것을 알 수 있다.
요소를 삭제하는 방법도 다양한데,
1. 빈 리스트를 저장하는 방법
2. del 내장 함수를 쓰는 법
을 먼저 볼 수 있다.
빈 리스트를 저장하는 방법은 다음과 같다.
list8 = [50, 10, 20, 30, 40]
print(list8[1:3])
list8[1:3] = []
print(list8)
[50, 30, 40]
다음은 del 함수를 쓰는 방법이다.
list9 = [50, 10, 20, 30, 40]
print(list9)
del list9[2]
print(list9)
[50, 10, 30, 40]
인플레이스(자기자신에게 다시 저장)하여 표현하는 방법도 있다.
만일 list10 = [7, 8, 9]라면,
list10 = list10 + [10, 11]
print(list10)
해서 [7, 8, 9, 10, 11] 이 나오는데,
list10 = list10 + [10, 11] < 인플레이스한 이 식을 다르게 표현하여
list10 += [10, 11] 라고 나타낼 수 있다.
len 함수를 써서 객체의 길이 또한 확인 할 수 있으며,
ex) print(Ien(list10))
append() 함수를 써서 리스트 끝에 새로운 요소를 추가할 수 있다.
list11 = [10, 20, 30]
print(list11)
list11.append(40)
print(list11)
list11.append(50, 60) # TypeError: list.append() takes exactly one argument (2 given)
list11.append([50, 60])
print(list11)
[10, 20, 30]
[10, 20, 30, 40]
[10, 20, 30, 40, [50, 60]]
extend() 함수는 리스트에 여러 요소를 추가할 수 있다.
list12 = [10, 20, 30]
print(list12)
list12.extend([50])
print(list12)
list12.extend([100, 200, 300])
print(list12)
[10, 20, 30]
[10, 20, 30, 50]
[10, 20, 30, 50, 100, 200, 300]
pop()함수는 리스트의 마지막 요소를 삭제하고 삭제된 요소를 반환한다.
list13 = [10, 20, 30]
print(list13)
temp = list13.pop()
print(list13)
print(temp)
[10, 20, 30]
[10, 20]
30 -> 삭제한 요소를 temp에 넣었으니 30이 나온다.
insert()함수는 리스트의 특정 인덱스에 요소를 한개만 추가한다.
list14 = [10, 20, 30]
print(list14)
list14.insert(1, 100)
print(list14)
list14.insert(2, [1000, 2000])
print(list14)
[10, 20, 30]
[10, 100, 20, 30]
[10, 100, [1000, 2000], 20, 30]
index() 함수는 리스트에서 특정 값의 인덱스를 반환한다.
list15 = [10, 20, 30]
print(list15)
print(list15.index(20))
[10, 20, 30]
1
reverse() 함수는 리스트의 요소들의 순서를 반대로 변경한다.
list16 = [100, 10, 30, 20, 40]
print(list16)
list16.reverse()
print(list16)
[100, 10, 30, 20, 40]
[40, 20, 30, 10, 100]
슬라이싱을 사용하여 리스트의 순서를 뒤집는 방법도 있다.
[start: stop: step]에서,
start를 생략하면 -1으로 간주하고,
stop을 생략하면 0으로 간주하여,
list17 = [100, 30, 50, 20, 80]
print(list17[::-1])
step이 -1이므로 앞으로 하나씩 슬라이싱 하여,
[80, 20, 50, 30, 100] 이 나온다.
sort() 메소드는 리스트의 요소를 오름차순으로 정렬하고,
list18 = [20, 50, 30, 100, 10]
print(list18)
list18.sort()
print(list18)
[20, 50, 30, 100, 10]
[10, 20, 30, 50, 100]
내림차순으로 정렬할 때에는 reverse= True를 사용한다.
list19 = [30, 50, 20, 10, 100]
print(list19)
list19.sort(reverse=True)
print(list19)
[30, 50, 20, 10, 100]
[100, 50, 30, 20, 10]
.
sorted() 내장 함수를 사용하여 모든 요소를 정렬한 후 반환해준다.
list20 = [100, 30, 20, 40, 10]
print(list20)
print(sorted(list20))
print(list20)
result = sorted(list20)
print(result)
[100, 30, 20, 40, 10]
[10, 20, 30, 40, 100]
[100, 30, 20, 40, 10] <- 변하지 않고 그대로임을 확인할 수 있다.
[10, 20, 30, 40, 100]
count()는 리스트에서 특정 요소의 갯수를 반환해준다.
list21 = [10, 20, 20, 30, 20, 40, 50, 30, 50]
print(list21.count(20))
print(list21.count(100))
3
0
'코딩 > 파이썬' 카테고리의 다른 글
컬렉션 타입 - 세트 (0) | 2024.03.14 |
---|---|
파이썬 컬렉션 타입, 튜플 (0) | 2024.03.13 |
문자열 다루기 (2) | 2024.03.13 |
파이썬의 출력 (0) | 2024.03.12 |
파이썬 과제 (1). 컴퓨터 연산 문제 (0) | 2024.03.12 |