#리스트 복사
i = [1,2,3,4,5]
j = i
print('j = ',j)
print('i = ',i)
print('--------------')
j[0] = 100
#i,j의 주소값이 같으므로 값이 모두 변한다.
#참조전달
print('id(j) = ',id(j))
print('id(i) = ',id(i))
print('j = ',j)
print('i = ',i)
print('--------------')

#리스트 복사하기(두개다 가능)
#copy가 명시적으로 더 잘보임
#수치전달
x = j.copy()
x = j[:]
x[0] = 200
print('id(j) = ',id(j))
print('id(x) = ',id(x))
print('j = ',j)
print('x = ',x)
print('--------------')

"""
출력결과
j = [1, 2, 3, 4, 5]
i = [1, 2, 3, 4, 5]
--------------
id(j) = 4499210056
id(i) = 4499210056
j = [100, 2, 3, 4, 5]
i = [100, 2, 3, 4, 5]
--------------
id(j) = 4499210056
id(x) = 4735167240
j = [100, 2, 3, 4, 5]
x = [200, 2, 3, 4, 5]
--------------
"""

#튜플
#()로 표현한다
#데이타 조작 보다는 읽어 쓸때 사용한다.
#질문 보기등에 사용하기 유용하다.
print(help(tuple))
t = (1,2,3,4,1,2)
print(type(t))
print('--------------')
#값변경 안됌
#t[0] = 100
#에러남

#튜플안에 배열을 넣을수 있다
#배열은 수정가능하다
t = ([1,2,3],[4,5,6])
print(t)
t[0][0] = 200
print(t)
print('--------------')

#튜플의 언패킹
t = (10,20)
print(t)
x, y = t
#x, y = 10,20 과 같다.
print(x, y)
#대표적인 사용예
min, max = 0, 100
print(min, max)
#값변경도 가능
min, max = max, min
print(min, max)
print('--------------')
"""
출력결과
<class 'tuple'>
--------------
([1, 2, 3], [4, 5, 6])
([200, 2, 3], [4, 5, 6])
--------------
(10, 20)
10 20
0 100
100 0
--------------
"""


from typing import List

num = 1
name = '1'

#형변환
num = int(name)

print(num , type(num))
print(name, type(name))

#리스트 메소드 정보보기
#print(help(list))

#배열생성
n = [1,2,3,4,5]
#배열 마지막 값 꺼내기
print(n.pop())
#배열 첫번째 값 꺼내기
print(n.pop(0))
#배열 값 보기
print(n[0])
#배열에 값 추가
n.insert(0,100)
print(n)

#배열에 값 제거
del n[0]
print(n)

#배열에 특정 값 첫번째 제거
n.remove(2)
print(n)

a = [1,2,3,4,5]
b = [6,7,8,9,10]

#새로운 배열에 배열 더하기
x = a + b
print(x)

#기존 배열에 배열 더하기
a += b
print(a)

r = [1,2,3,4,5,1,2,3]

#배열안에 값 위치 확인하기
print(r.index(3))

#배열안에 3 갯수 확인
print(r.count(3))

#두번째 3 위치 확인하기
print(r.index(3,r.index(3)+1))

#if문 배열안에 숫자 있나 확인하기
if 5 in r:
print('5가 있다')

#배열 정렬하기
r.sort()
print(r)
#배열 반대로 정렬하기
r.sort(reverse=True)
print(r)
#한단계 전으로 돌리기
r.reverse()
print(r)

#문자열 특정문자 기준으로 배열만들기
s = 'a b c d'
splitTest = s.split(' ')
print(splitTest)

#배열 문자열로 만들기(특정문자 추가가능)
s = ''.join(splitTest)
print(s)

"""
배열 리스트 출력결과
1 <class 'int'>
1 <class 'str'>
5
1
2
[100, 2, 3, 4]
[2, 3, 4]
[3, 4]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2
2
7
5가 있다
[1, 1, 2, 2, 3, 3, 4, 5]
[5, 4, 3, 3, 2, 2, 1, 1]
[1, 1, 2, 2, 3, 3, 4, 5]
['a', 'b', 'c', 'd']
abcd
"""


+ Recent posts