# List 는 mutable
l = [0, 1, 2, 3, 4, 5]
print(l[0]) # 0
print(l[-1]) # 5
print(l[-2]) # 4
print(l[0:2]) # [0, 1]
print(l[2:]) # [2, 3, 4, 5]
print(list('abc')) # ['a', 'b', 'c']
print(type(l)) # 'list'
print(l[::2]) # [0, 2, 4]
print(l[::-1]) # [5, 4, 3, 2, 1, 0]
a = ['a', 'b', 'c']
n = [1, 2, 3]
x = [a, n] # [['a', 'b', 'c'], [1, 2, 3]]
print(x[0]) # ['a', 'b', 'c']
print(x[0][1]) # 'b'
####################################################################
s = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
s[0] = 'X' # 문자열에서는 에러가 발생했지만, list 에서는 OK
print(s[2:5]) # ['c', 'e', 'f']
s[2:5] = ['C', 'D', 'E'] # s = ['X', 'b', 'C', 'D', 'E', 'f', 'g']
s[2:5] = [] # 삭제처리 되어 s = ['X', 'b', 'f', 'g']
print(s[:]) # ['X', 'b', 'f', 'g']
s[:] = []
####################################################################
n = [1, 2, 3, 4, 5]
n.append(100)
print(n) # [1, 2, 3, 4, 5, 100]
n.insert(0, 200)
print(n) # [200, 1, 2, 3, 4, 5, 100]
n.pop() # 100
print(n) # [200, 1, 2, 3, 4, 5]
n.pop(0) # 200
print(n) # [1, 2, 3, 4, 5]
del n[0]
print(n) # [2, 3, 4, 5]
####################################################################
n = [1, 2, 2, 2, 3]
n.remove(2)
print(n) # 첫 2만 제거 [1, 2, 2, 3]
n.remove(2)
n.remove(2)
print(n) # [1, 3]
# n.remove(2) # 2가 없는 상태에서 지우려고 하면 에러 발생, ValueError: list.remove(x): x not in list
####################################################################
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]
x = a + b
print(x) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a += b
print(a) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]
a.extend(b)
print(a) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
####################################################################
r = [1, 2, 3, 4, 5, 1, 2, 3]
print(r.index(3)) # 2
print(r.index(3, 3)) # 7
if 5 in r:
print('exist')
r.sort()
print(r) # [1, 1, 2, 2, 3, 3, 4, 5]
r.sort(reverse=True)
print(r) # [5, 4, 3, 3, 2, 2, 1, 1]
s = 'My name is Mike'
to_split = s.split(' ')
print(to_split) # ['My', 'name', 'is', 'Mike']
x = ' '.join(to_split)
print(x) # 'My name is Mike'
print(help(list))
####################################################################
i = [1, 2, 3, 4, 5]
j = i
j[0] = 100
print(i) # [100, 2, 3, 4, 5]
print(j) # [100, 2, 3, 4, 5]
x = [1, 2, 3, 4, 5]
y = x.copy() # 혹은 y = x[:] 로 사용도 가능
y[0] = 100
print(x) # [1, 2, 3, 4, 5]
print(y) # [100, 2, 3, 4, 5]
-----------------------------------
a = [0, 1, 2, [3]]
b = copy.deepcopy(a)
b[3][0] = -3
print(a)
print(b)
####################################################################
X = 20
Y = X
Y = 5
print(id(X))
print(id(Y))
print(X) # 20
print(Y) # 5
X = ['a', 'b']
Y = X
Y[0] = 'p'
print(X) # ['p', 'b']
print(Y) # ['p', 'b']