Programming/Python 기초

[Python 기초] 파이썬 시작하기_Day 5(append/extend 차이, tuple/list 다루는법, 함수/Dictionary의 CRUD)

Yuja_k 2021. 5. 1. 22:12
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