4. List
4.1 리스트 생성
L = [1, 2, 3] ## [] 를 사용하여 list 생성
type(L)
L1 = [] ## 빈 리스트 생성
type(L1)
L2 = list()
type(L2)
# 리스트는 다양한 type의 데이터를 포함 할 수 있다.
L3 = [1, "Hello", 3.14, [1, 2, 3]]
L3
type(L3)
# Matrix 생성
LM = [[1, 2, 3],
[4, 5, 6]]
LM ## 실제로는 matrix가 아니고 두개의 리스트를 포함 한 리스트이다.
4.2 List Indexing
4.2.1 1차원 Indexing
L = [3, 1, 6, 5, 2, 4] ##index order 는 0부터 시작이다
## [0, 1, 2, 3, 4, 5] , [-6, -5 , -4, -3, -2, -1]
len(L)
L[0]
L[6] ## index는 5까지 임으로 6은 안뜬다
L[-1] ## - 을 사용 할 경우 거꾸로 사용한다.
## negative 를 사용하는 이유는 뒤에서 몇번 째 를 사용하기 위해서다
L = [3, 1, 6, 5, 2, 4] ## 6개의 데이터에서 뒤에서 6번째인 경우
L[-6]
L[-5]
L[-7] ## 마찬가지로 error가 뜬다.
L[1+3]
4.2.2 다차원 Indexing
LM = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
LM[0][1] ## 1st row 2nd col
LM[2][0] ## 3rd row 1st col
4.3 List Slicing
L = [1, 2, 3, 4, 5, 6]
L[0:2] ## L[x:y] index x 이상 y 미만
L[2:5]
L[ : 3] ## L[ : y] 앞을 빈칸으로 할 경우 앞에서부터 y개의 리스트를 가져온다.
L[1 : ] ## L[x : ] 을 하면 x에서 부터 끝까지 불러온다.
L[0:] ## 처음부터 끝까지
L[0:len(L)] ## 위 와 마찬가지이다.
L[ : -1] ## == L[ :len(L)-1] == L[ : 5-1] == L[ : 4]
L[-2: ]
# 문자열도 가능하다
s = "Hello World!"
s[:-1] ## 뒤에서 1개를 버린다
s[:-3] ## 뒤에서 3개를 버린다
4.4 리스트 연산하기
4.4.1 리스트 더하기
L = [1, 2, 3]
L2 = [4, 5]
L3 = L + L2
L3
4.4.2 리스트 곱하기
L3 * 3 ## list에 있는 값에 곲하기가 아닌 같은 list를 n번 더한다.
4.5 리스트 수정하기
L3[0] = 7 ## index를 지정하고 바꾼다.
L3
L3[0:1] = 10 ## 한번에 하나씩 지정된다.
4.6 리스트 원소 추가하기 append()
L = []
L.append(4)
L.append(8)
L.append(4+8)
L
4.7 리스트 원소 정렬하기 sort()
L = [6, 5, 4, 3, 2, 1]
L
L.sort() ##오름차순
L
L.sort(reverse=True) ## 내림차순
L
4.8 리스트 뒤집기 reverse()
- sort()의 경우 오름 혹은 내림 차순으로 정렬을 한다.
- reverse()의 경우 순서만 변경한다.
L = [16, 3, 8]
L.reverse()
L
참고
L = [1, 2, 3, 4, 5, 6]
L[::2] ## list의 L[0:len(L):2] 전체에서 0 index에 2씩 더해진 index를 출력해 달라.
L[::3]
L = [3, 2, 5, 6, 1, 4]
L[::-1] ## 처음부터 끝까지를 -1을 빼면서 출력 해라
4.9 리스트 원소 제거하기 pop()
L = [3, 2, 5, 6, 1, 4]
L.pop() ## index의 끝에서부터 제거한다.
L
L = [3, 2, 5, 6, 1, 4] ##pop(index)를 사용해서 특정 정보를 제거 할 수 있다.
L.pop(2)
L
4.10 list 주소 복사
L = [1, 2, 3, 4, 5, 6]
#L 과 L[:] 는 같은 걸 출력한다.
print(L)
print(L[:])
#그러나 id는 다르다
print(id(L))
print(id(L[:])) ## 이경우 어드레스가 데이터를 복사해서 다른곳에 저장한 것이다.
#List 복사하기
L2 = L
id(L2) ## Same id as L
L2 = L[:]
id(L2) ## Same is as L[:]
## 이렇게 될 경우 L의 데이터를 건드리지 않고 L2에 새롭게 지정해서 편집 가능하다.