Networks/Python

SK networks AI Camp - Python 기본(2)_자료구조

코딩하는 Español되기 2024. 7. 11. 08:00

 

새로운 파일을 만들어서 진행해볼게요.

Python version은 3.11로 가상환경을 만들어서 해볼게요.

코드 보고도 모르시겠으면 아래 링크를 참조해주세요.

해야 할 내용

1. Python version 3.11로 가상환경 설정

py 3.11 -m venv .venv

2. 가상환경에서 pip upgrade 후 jupyter 설치

.\.venv\Scripts\activate
py -m pip install --upgrade pip
py install jupyter

 

2024.07.08 - [컴퓨터 공학/Network] - SK networks AI Camp - Python, Git 등 설치

 

SK networks AI Camp - Python, Git 등 설치

SK networks AI Camp 3기가 24.7.8일 자로 오픈 했어요!오늘은 하루 정도 설치만 했답니다.교육을 위해 사용할 여러가지 툴들을 설치합니다!1. Python2. VS Code3. Git4. Docker  딥러닝, 머신러닝을 하기에 적합

joowon582.tistory.com

아래의 코드를 입력했을 때 사진과 같이 나오면 docker가 잘 되어있는 거에요.

docker 설치가 궁금하다면 위의 링크를 클릭해서 들어가주세요.

docker --verion
docker images
docker ps

 

이건 그냥 설정을 해준 거고 이제 Python에 대해 공부해볼게요.


1. 리스트

○ 생성법 : 리스트명 = [요소1, 요소2, 요소3]

   ※ 보통 리스트명은 lst로 설정을 해줘요.

   ※ 리스트는 [ 로 열고 ]로 닫아줘요

 

리스트를 만들고 인덱싱해볼게요

○ a 라는 리스트에 1 부터 5까지 넣고 0번째 인덱스를 출력하는 코드에요.

○ 출력결과는 어떻게 나올까요? 예상하고 코딩을 직접해서 예상해보세요

a = [1, 2, 3, 4, 5]
a[0]

그리고 리스트는 다른 타입을 넣을 수도 있어요

b = [1, 2, 'a', ['b', 'c']]

이런 식으로도 가능해요.

이렇게 했을 때 ['b', 'c']가 들어가서 'b' 나 'c' 만 찾고 싶다면 아래처럼 코딩하면 되요.

print(b[-1][0]) # 'b'
print(b[-1][-1]) # 'c'

리스트도 슬라이싱이 가능해요. 문자열 슬라이싱 하는 것이랑 동일해요.

모르시겠다면 아래 링크를 통해 확인해주세요.

2024.07.09 - [컴퓨터 공학/Network] - SK networks AI Camp - Python 기본(1)

 

SK networks AI Camp - Python 기본(1)

두번째 시간에는 Python 기본 문법에 대해 알아보았어요.정리한 걸 포스팅 해볼게요. 변수? 상수? 계수?4x + 6 = 12   ... 4 : '계수' , x : '변수', 6 : '상수' , 12 : '상수' - 변수(Variable) : 변하는 수. 즉,

joowon582.tistory.com

리스트 연산

○ 더하기, 반복하기

  리스트끼리 합칠 수도 있고 문자열 출력 반복 처럼 반복할 수도 있어요.

a = [1, 2]
b = [3, 4]
print(a+b) # [1,2,3,4]

print(a * 3) # [1,2,1,2,1,2]
print((a * 2) + (b * 2)) #[1, 2, 1, 2, 3, 4, 3, 4]

○ 길이 구하기

   길이를 구하려면 len(리스트명)으로 구할 수 있어요.

a = [1, 2]
print(len(a)) # 2

○ 수정

   리스트 수정을 위해 인덱싱하고 바꾸는 방법이 있어요.

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

a[0] = 0 # a == [0, 2, 3, 4, 5]
a[4] = 7 # a == [0, 2, 3, 4, 7]
a[-2] = 10 # a == [0, 2, 3, 10, 7]
a[2:4] = [9, 11] # 설명 : 2 ~ 4(4번째 포함 X)까지 인덱스를 9, 11로
# ==> a == [0, 2, 9, 11, 7]
a[:3] = [2, 29, 39] # a == [2, 29, 39, 11, 7]

○ 삭제

   삭제를 위해서는 del 을 써요. 위에 예제에 이어서 작성해볼게요.

# 현재 a == [2, 29, 39, 11, 7]
del a[0] # a == [29, 39, 11, 7]
del a[-1] # a == [29, 39, 11]
del a[:2] # a == [11]

리스트 함수들

리스트 함수들은 예제로 알아볼게요.

○ append(추가)

a = [1, 2, 3]
a.append(9) # a == [1, 2, 3, 9]
a.append(5) # a == [1, 2, 3, 9, 5]

○ sort(정렬)

# 현재 a == [1, 2, 3, 9, 5]
a.sort() # a == [1, 2, 3, 5, 9]

b = ['c', 'f', 'a', 'b', 'e', 'd']
b.sort() # b == ['a', 'b', 'c', 'd', 'e', 'f']

○ reverse(뒤집기)

# 현재 a == [1, 2, 3, 5, 9]
# 현재 b == ['a', 'b', 'c', 'd', 'e', 'f']

a.reverse() # a == [9, 5, 3, 2, 1]
b.reverse() # b == ['f', 'e', 'd', 'c', 'b', 'a']

○ index(위치)

# a == [9, 5, 3, 2, 1]
# b == ['f', 'e', 'd', 'c', 'b', 'a']
a.index(9) # 0
b.index('e') # 1
a.index(10) # 없는 값을 넣으면 오류 발생

○ count(요소 숫자)

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

a.count(1) # 1
a.count(5) # 5
a.count(2) # 2

○ extend(확장)

  a와 b가 리스트일 때

  ● a.append(b) 를 하면 a에 b가 리스트형태로 들어가요.

  ● a.extend(b) 를 하면 a에 b의 값이 들어가요.

a = [1, 2, 3]
b = [4, 5]

a.append(b) # a == [1, 2, 3, [4, 5]]

a = [1, 2, 3]
b = [4, 5]
a.extend(b) # a == [1, 2, 3, 4, 5]

2. 튜플

튜플 생성

○ 리스트는 [ ]로 둘러싸지만 튜플은 ( ) 로 둘러싸요

○ 리스트는 요소 값의 생성, 삭제, 수정이 되지만 튜플은 요소 값 변경이 안되요.

a = ()
b = (1, ) # 하나일 때는 (1,) 처럼 , 를 찍어줘야해요.
# 중요
# 만약 b = (1) 로 한다면 type(b)로 검색하면 int가 나와요
# ----------------
c = (1, -2, 3 , 14)
d = (1, 'b', 'c')
e = (1, 2, ('a', 'bc')) # 리스트와 마찬가지로 튜플 안에 튜플도 가능해요.

c[0] = 5 # 튜플이라서 수정을 하면 오류 발생
del c[0] = 5 # 튜플이라서 수정을 하면 오류 발생

그러면 수정은 어떻게 해요? 리스트로 변환하여 할 수 있어요

4가지 방법이 있어요.

 1) list()  함수 사용

a = (1, 2, 3)
b = list(a)
b.append(4)
b # [1, 2, 3, 4]

 2) Unpacking 사용(언패킹 연산자 * 사용)

a = (1, 2, 3, 4, 5)
b = [*a]
b.append(6)
b # [1, 2, 3, 4, 5, 6]

 3) List comprehension 사용

a = (1, 2, 3, 4, 5)
b = [x for x in a]
b.append(6)
b # [1, 2, 3, 4, 5, 6]

 4) for 문 사용

a = (1, 2, 3, 4, 5)

b = []
for e in a:
	b.append(e)
b.append(6)
b # [1, 2, 3, 4, 5, 6]

인덱싱

a = (1, 2, 3, 'a', 'bc')
a[0] # 1
a[-1] # 'bc'

슬라이싱

# a == (1, 2, 3, 'a', 'bc')
a[:2] # (1, 2)
a[::-1] # ('bc', 'a', 3, 2, 1)

튜플 연산

○ 더하기 곱하기

a = (1, 2, 3)
b = ('a', 'b', 'cd')
a + b # (1, 2, 3, 'a', 'b', 'cd')
a + 3 # 튜플은 튜플끼리만 덧셈 가능
a + [2, 3] # 튜플은 튜플끼리

# ---------------------------
a * 2 # 곱하기는 가능 (1, 2, 3, 1, 2, 3)

길이구하기

a = (1, 2, 3, 'a', 'b')
len(a) # 5
b = (1, 2, 3, ('a', 'b'))
len(b) # 4
len(b[3]) # 2

3. 딕셔너리

Key와 Value를 한 쌍으로 갖는 자료형

생성

dic = {'name' : 'hong', 'phone' : '01012345678', 'birth' : 1118}
dic # {'name' : 'hong', 'phone' : '01012345678', 'birth' : 1118}

dic = {'color' : ['red', 'green', 'blue'], 'age' : [10, 20, 30], name : 'hong'}
dic # {'color' : ['red', 'green', 'blue'], 'age' : [10, 20, 30], name : 'hong'}

조회

dic = {
	'voc' : {
    	'a' : 1, 'b' : 2
    },
    'users' : [
    	{
        	'name' : 'name1',
            'age' : 20
        },
        {
        	'name' : 'name2',
            'age' : 30
        }
    ]
}

dic['voc'] # {'a': 1, 'b' : 2}
dic['voc']['b'] # 2
dic['users'][0] # {'name' : 'name1', 'age':20}
dic['users'][1]['age'] # 30

조건 조회

dic = {'a' : 1, 'b': 2, 'c' : 3}
'a' in dic # True
'f' in dic # False

get()

dic = {'a' : 1, 'b': 2, 'c' : 3}
dic['a'] # 1
dic.get('a') # 1
dic['f'] # 없는 key 조회하면 오류
dic.get('f') # 없는 key 조회하면 빈칸 반환
dic.get('f', 'None') # 없는 key 조회하면 None 반환

추가

a = {'a' : 1}
a['b'] = 2 # a == {'a' : 1, 'b' : 2}
a['c'] = [1, 2, 3] # a == {'a' : 1, 'b' : 2, 'c' : [1, 2, 3]}
a['d'] = {'a' : 11, 'b': 22} # a == {'a' : 1, 'b' : 2, 'c' : [1, 2, 3], 'd' : {'a' : 11, 'b' : 22}}

수정

# a == {'a' : 1, 'b' : 2, 'c' : [1, 2, 3], 'd' : {'a' : 11, 'b' : 22}}
a['d'] = [{'a':1, 'b':2}] # {'a' : 1, 'b' : 2, 'c': [1, 2, 3], 'd' : [{'a':1, 'b':2 }]}

a['a'] = 'abc' #  {'a' : 'abc', 'b' : 2, 'c': [1, 2, 3], 'd' : [{'a':1, 'b':2 }]}
a['c'][0] = 100 # {'a' : 'abc', 'b' : 2, 'c': [100, 2, 3], 'd' : [{'a':1, 'b':2 }]}
a['d'][0]['b'] = 'bbb' # {'a' : 'abc', 'b' : 2, 'c': [100, 2, 3], 'd' : [{'a':1, 'b':'bbb'}]}

삭제

 # {'a' : 'abc', 'b' : 2, 'c': [100, 2, 3], 'd' : [{'a':1, 'b':'bbb'}]}
 del a['b'] # {'a' : 'abc', 'c': [100, 2, 3], 'd' : [{'a':1, 'b':'bbb'}]}

함수들

○ keys()

dic = {'name' : 'hong', 'phone' : '01012345678', 'birth' : 1118}
dic.keys() # dict_keys(['name', 'phone', 'birth'])

for k in dic.keys():
	print(k)
# name
# phone
# birth

[k for k in dic.keys()] # ['name', 'phone', 'birth']
list(dic.keys()) #['name', 'phone', 'birth']

○ values()

dic = {'name' : 'hong', 'phone' : '01012345678', 'birth' : 1118}

dic.values() # dict_values(['hong', '01012345678', 1118])

for v in dic.values():
	print(v)
# hong
# 01012345678
# 1118

○ key, value 쌍

dic.items()
# dic_items([('name', 'hong'), ('phone', '01012345678'), ('birth' : 1118)])

for k, v in dic.items():
	print(f'k: {k} / v: {v}')
   
# k: name / v: hong
# k: phone / v: 01012345678
# k: birth / v: 1118

4. 집합

○ 중복을 허용하지 않고, 순서가 없어요.

집합생성

a = set([1, 1, 2, 2, 2])
a  # {1 , 2}
b = set('Hello')
b # {'H', 'e', 'l', 'o'}

교집합/합집합/차집합

a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])

# -------------------------------------
a & b # {3, 4, 5} 교집합
a.intersection(b) # {3, 4, 5} 교집합

# -------------------------------------
a | b # {1, 2, 3, 4, 5, 6, 7} 합집합
a.union(b) # {1, 2, 3, 4, 5, 6, 7} 합집합

# -------------------------------------
a - b # {1, 2} 차집합
a.difference(b) # {1, 2} 차집합

추가

a = set([1, 2, 3])
a.add('55')
a.add(77)
a.update(['a', 'b', 'c']) #여러개 추가 .update(추가할 요소)
a # {1, 2, 3, '55', 77, 'a', 'b', 'c'}

제거

a = set([1, 2, 3, 4, 5])
a.remove(1)
a # {2, 3, 4, 5}

5. 불리언

True = 1, False = 0

 

자료형별 데이터의 참/거짓

전체적인 설명

a = 0			# 0             # False
b = 1			# 정수          # True 
c = 1.1	 		# 실수          # True
d = ""			# 빈String      # False
e = "H"			# String        # True
f = []			# 빈 list       # False
g = [[], []]    # 빈 2차원 list # True
h = ['', '']    # 빈 string 2개 # True
i = [1,2]		# list          # True
j = ()			# 빈 튜플       # False
k = (1, 2)		# 튜플          # True
l = set([]) 	# 빈 Set        # False
m = set([1])	# set 값        # True

○ 숫자형

a, b, c, d = 0, 1, -1, 3.14

bool(a), bool(b), bool(c), bool(d)
# (False, True, True, True)

○ 문자형

a, b = "", "Hello World"
bool(a), bool(b)
# (False, True)

○ 리스트

a, b, c, d = [], list(), [1, 2, 3], ['a', 'b']

bool(a), bool(b), bool(c), bool(d)
# (False, False, True, True)

○ 튜플

a, b, c, d = (), tuple(), (1, ), (1, 2, 3)

bool(a), bool(b), bool(c), bool(d)
# (False, False, True, True)

○ 딕셔너리

a, b, c = {}, dict(), {'a' : 1}

bool(a), bool(b), bool(c)
# (False, False, True)

○ 집합

a, b, c = set(), set([1, 2, 3]), set(['a', 'b'])

bool(a), bool(b), bool(c)
# (False, True, True)

 

오늘 Python 자료구조에 대해 알아봤어요. 다음 시간에 또 배운 걸 포스팅 해볼게요!