728x90
반응형
SMALL
Day 4까지 따라오셨다면, 이번 포스팅에서는 중간중간 헷갈리거나 차이정에 대한 의문이 생길법한 문법에 대하여 집고 넘어가 보도록 하겠습니다.
우선, 첫번째로는 값을 추가하는 append와 extend에 대하여 알아보도록 하겠습니다
append / extend 차이
☆ 한개의 값만 추가할 수 있는지 vs 합성되어 여러 개의 값으로 추가할 수 있는지의 차이입니다.
a = [1, 2, 3]
a.append(4)
print(a)
a = [1, 2, 3]
a.append([4, 5]) # append 는 한개만 추가시킨다 (list 도 한개)
print(a)
a = [1, 2, 3]
a.extend([4]) # append 와 같은 결과값
print(a)
a = [1, 2, 3]
a.extend([4, 5, 6]) # append 는 한개지만 extend 는 합성을 시킨다
print(a)
a = [1, 2, 3]
a = a + [4, 5, 6] # + 연산자를 통해 extend 시키는것
print(a)
tuple / list 차이
a = ( ) # console 에선는 a 만처도 바로 나온다
b = [ ]
print(a, b, type(a), type(b))
a = 10, # tuple type BUT 실제 사용 X, () 생략
print(type(a))
b = (10,) # ( ,)를사용하여 tuple 을 만든다 <- best
print(type(b))
c = 10
d = (10) # ,에따라 tuple type int type 이다
print(type(c), type(d))
e = (10, 20, 30,)
print(e, type(e))
f = 10, 20, 30 # () 생략된 tuple
print(f, type(f))
a = (10, 20, 30)
b, c, d = a # a 가 가지고 있는 요소를 한개씩 집어넣은것
print(a, b, c, d)
a = [10, 20, 30]
b, c, d = a # list 도 된다
print(a, b, c, d)
a = 10
b = 20
a, b = b, a # data 교환
print(a, b)
a = [10, 20, 30]
tuple(a) # list 자료형 -> tuple 자료형 (UD를 못하게끔)
b = tuple(a) # type 은 그대로기 때문에 return 값이 있다 (b라는 return 값을 만들어, b는 튜블 a 다 )
print(type(b))
a = (10,) + (20, 30) # tuple 항목 연결
print(a)
print((10,) + (20, 30)) # 출력코드에 바로 대입 연결
a = (1, 2, 3)
b = (1, 2, 3, 4)
print(a == b)
print(a <= b) # 대소비교 -> 갯수가 크냐 작냐
for i in a:
print(i)
a = (10, 20, 30)
b = [10, 20, 30]
# print(a(0)) #tuple 일고 tuple 타입으로 data 을 찾을 수 없다
print(a[0])
b[0] = 20
# a[0] = 20 #'tuple' object does not support item assignment
a = [10, '호랑이', [20, 30], (40, '코끼리', [50, 60], [70, 80])] # list 안에 tuple 도 당연히 들어갈수 있다
print(a)
a = []
b = list() # list 라는 함수를 call = list
print(type(a), type(b))
c = ()
d = tuple() # tuple 함수
print(type(c), type(d))
e = [10, 20]
f = list('apple') # int X
print(type(e), type(f))
a = []
b = tuple(a) # list -> tuple
c = list(b) # tuple -> list
print(type(a), type(b), type(c))
split
a = '호 랑 이'
print(a)
b = a.split(' ') # 문자열을 분리를 시켜서 (split 은 항상 return 값이 있다)저장되는 타입이 list
print(b)
[offset]
· 기준점으로부터 상대적으로 떨어진 거리 ← 배열 index
a = [10, 20, 30]
print(a[0], a[-1]) # [-]역으로 돈다 BUT [-3]이하, [3]이상 은 out of bound
Dictionary
dictionary를 쉽게 예로 들자면 a = {k: v, k: v, k: v,...} 일 때,
{k <- key v <- value } 색인 번호, key 값은 중복 X, 배열을 이용한 index 문법 X
a = {}
print(type(a))
a = {1: 10, 2: 20, 5: 40}
print(a)
a = {10: '호랑이', 20: '코끼리', 30: '독수리'}
print(a)
a = {1: 10, 2: 20, 2: 30, 5: 40} # key 가 중복일 경우 가장 최근의 값을로 갱신된다
print(a)
a = {1: [10, 20], 2: [30, 40], 3: [50, 60]} # key 값은 증첩해서 넣을 수 있다 list or tuple etc...
print(a)
a = {1: (10, 20), 2: (20, 30), 5: (40, 50)}
print(a)
a = {1: 10, 2: '호랑이', 3: [10, 20], 4: (30, 40), 5: {1: 100}} # key 값안에 key 중첩 사용 가능 (이중 중첩)
print(a)
a = {'호랑이': 10, '코끼리': 20, '독수리': 30} # key 값은 문자열도 가능
print(a)
a = {10: 1, 'apple': 2} # key 값이 문자 숫자 가능하지만 가급적 같은 타입으로 통일
print(a)
a = {'name': '홍길동', 'age': 20, 'salary': 300} # key 값 = JSON 문법
print(a)
Dictionary의 활용 - CRUD
CRUD의 의미는 앞서 설명해서 아시죠~?
2021.04.28 - [Programming/Python 기초] - [Python 기초]파이썬 시작하기_Day 4(숫자/문자 변형, list 관리(CRUD)/활용)
a = {'name': '홍길동', 'age': 20, 'salary': 300} # key 값 = JSON 문법
print(a)
a['name'] = '이순신' # data 갱신 방법
print(a)
print(a['name'], a['age'], a['salary']) # 배열의 틀을 이용하여 key 값 출력
a['height'] = 180 # 찾는 key 값이 없을 경우, 속성이 자동으로 추가된다
print(a)
dictionary에서도 CRUD의 의미는 유용하게 사용됩니다.
1. Create
a = {}
a['name'] = '이순신' # C)create
a['age'] = 20
print(a)
2. Reading
b = a['name'] # R)reading
print(b, a['name'], a) # 출력에서 바로 읽을수도 있고 함수로 지정해줄수도 있다
3. Update
a['name'] = '독수리' # U)update
a['age'] = 100
print(a)
4. Delete
del(a['name']) # D)delete 1. del () <- 함수 사용
print(a)
del a['name'] # 2. () 생략 가능 <- 예약어 사용
print(a)
Dictionary의 활용 - [], get(), key() 함수를 이용한 select
a = {'name': '홍길동', 'age': 20, 'salary': 300}
print(a)
b = a['name']
c = a.get('name') # dict.get('key')
print(b, c)
print(a.keys()) # 모든 key 출력
# a = range(0, 10)
print(a)
for i in a.keys(): # range 와 비슷하게 key 값을 돌릴수 있다
print(i)
for items in a.items():
# print('호랑이')
print(items) # ('name', '홍길동') <- 형식의 출력
# print(type(items)) # tuple type
print(items[0], items[1]) # name 홍길동 <- 형식의 출력
for values in a.values():
print(values) # items 과는 다르게 values 는 key 값 X, 값만 출력
Dictionary의 활용 - copy()
여기서 copy는 얕은 복사로 볼 수 있습니다.
a 복사를 20으로 갱신하면 a = 20 ← 메모리의 공유
deepcopy() 깊은 복사 ← 새로운 것을 갱신
a = [1, 2, 3]
b = a # 대입 <- 얕은복사 ; 메모리 공유
print(id(a))
print(id(b))
a[0] = 4
b[2] = 5
print(a)
print(b) # a를 변경시켜도 b를 변경시켜도 메모리를 공휴해서 같은 값
a.append(99)
print(a, b) # 얕은 복사 결과값은 a b 둘다 같다
a = [1, 2, 3]
b = a[:] # 슬라이스[0:3]전체 복사 <- 깊은 복사
print(id(a))
print(id(b))
a[0] = 4
b[2] = 5
print(a)
print(b)
a.append(99)
print(a, b) # a와 b는 영향을 받지 않는다
a = {1: 100, 2: 200, 3: 300}
b = a
a[4] = 400
print(b) # b가 a를 포함해서 나타남 -> 얕은 복사
다음 포스팅에서는 함수 12가지 형태(function)에 대하여 인수 전달, return, break, 가변 인수 등 자세하게 알아보도록 하겠습니다.
728x90
반응형
LIST
'Programming > Python 기초' 카테고리의 다른 글
[Python 기초] 파이썬 시작하기_Day 6(함수 선언하기_12가지 형태 "function" 에 대하여 + 예제) (0) | 2021.12.09 |
---|---|
[Python 기초]파이썬 시작하기_Day 4(숫자/문자 변형, list 관리(CRUD)/활용) (0) | 2021.04.28 |
[Python 기초]파이썬 시작하기_Day 3(삼항연산, list, for문, 중첩 for문) (0) | 2021.04.25 |
[Python 기초]파이썬 시작하기_Day 2(배열, 리스트, 연산, 제어문) (0) | 2021.04.17 |
[Python 기초]파이썬 시작하기_Day 1(입출력; default 값 활용, 변수선언, SWAP) (0) | 2021.04.13 |