본문 바로가기

1. Python

Python 기본 자료형과 컨테이너 개요 + 컨테이너 다루기 (1강-5강)

 

 

 

현재 수강 강의:

수치분석을 위한 Python(파이썬) 라이브러리 Part.1-1


1강_파이썬 기본 자료형과 컨테이너 개요

Numpy : 다차원의 배열
Scipy    : Numpy를 확장한 형태의 라이브러리. Numpy를 기반으로 함
              함수의 집합체, 수학적인 알고리즘 등

 

* 기본자료형 
1. 숫자 : 정수형, 실수형
2. 불리언(Booleans) : true, false 등의 논리형
3. 문자


* 컨테이너 : 리스트, 딕셔너리, 집합, 튜플 로 이루어져 있음

파이썬 사용 : cmd -> python 입력 
(아나콘다 버전 or 3.x대의 버전이면 사용에 문제 없음)

c언어, java : 자료형을 나타내는 변수 선언 시, int나 float라는 키워드 사용
python        : 변수의 data 대입 시 이러한 키워드가 필요가 없음. 컴파일링을 하지 않음
                     ++, --, &&와 같은 연산은 하지 않음 ( 두개 중복이 아닌, 하나만 사용할 수 있음. +,-,&)

>> g = '''good
>> morning'''


>> g = good\nmorning
>> print(g) = good
                    morning


k = "kim"
l = "lee"
kl = '%s %s %d' % (k, l, 1212)
# s는 spring(문자), d는 digit(숫자)를 의미

kl = 'kim lee 1212' 
#sprintf 방식



2강_컨테이너 다루기 1

리스트 : Array (다른 언어의 배열의 형태)
크기가 고정이 됨. (예시) int형 배열 : 정수값만 들어갈 수 있음
# =(equal) : binding(바인딩)한다 라고 부름 


str = "hello"

대문자로 바꾸고싶다?

str.upper() = 'HELLO'

첫글자만 대문자로 바꾸고싶다?

str.capitalize() = 'Hello'

소문자로 바꾸고 싶다?

str.lower() = 'hello'

문자열의 정렬이 필요하다? (오른쪽, 왼쪽 등)

str.rjust(9) = '    HELLO' (오른쪽정렬)
str.ljust(9) = 'HELLO    ' (왼쪽정렬)
str.center(9) = '  HELLO  ' (가운데정렬)

문자열의 대체가 필요하다?

str.replace('E', 'W') = 'HWLLO'
str.replace('E', '***') = 'H***LLO'
#대소문자의 구분 필요

문자열 내의 공백제거가 필요하다?
str2 = '                  world'
str2.strip() = 'world'


문자열에서 사용된 문자 또는 단어의 수를 표현?

str = 'good morning good afternoon'
str.count('g') = 3
str.count('good') = 2

문자열 내의 문자 또는 단어의 위치 표현?

str = 'good morning good afternoon'
str.find('good') = 0 (맨 앞의 자리는 0으로 표현)
str.find('good', 3) = 13 (3번째자리 부터 'good'를 찾았을 때의 위치)


aa = [11, 22, 33]
aa[0] = 11  # 0은 첫번째 요소
aa[1] = 22
aa[2] = 33
aa[-1] = 33
aa[-2] = 22
aa[-3] = 11

리스트에 추가를 하고 싶을 떄
aa.append(True)  # 반드시 앞의 이니셜이 대문자여야 함.
aa = [11, 22, 33, True]

리스트 중 가장 마지막을 끄집어 내고 싶을 때
aa.pop() = True

range는 정수들로 구성된 리스트를 만드는 함수
number = range(10)
range(0,10)
number[0] = 0
number[9] = 9
10부터는 오류



3강 _ 컨테이너 다루기 2

슬라이싱 : 리스트의 요소(일부분)를 부분적으로 접근하기 위한 기법. (잘라낸다)


>>> number=[1,2,3,4,5]

>>> number[0:4]  # 앞의 0 : 첫번쨰 요소부터 / 뒤의 4 : 5번쨰 요소를 제외하고
[1, 2, 3, 4]
>>> number[1:4]
[2, 3, 4]
>>> number[2:4]
[3, 4]
>>> number[0:5]
[1, 2, 3, 4, 5]
>>> number[1:5]
[2, 3, 4, 5]

>>> number[0:]
[1, 2, 3, 4, 5]
>>> number[:4]
[1, 2, 3, 4]

>>> number[-1]
5
>>> number[:-1]
[1, 2, 3, 4]


>>>
>>> animals = ['dog','cat','monkey']
>>> animals
['dog', 'cat', 'monkey']
>>> for animal in animals:  #for문을 이용. animals안에서 animal을 뽑아낸다.
...     print(animal)  #파이썬은 들여쓰기가 매우 중요
...
dog
cat
monkey
>>>


 #enumerate함수 : 리스트 각 요소의 인덱스에 접근할 떄 사용하는 함수
>>>
>>> animals = ['고양이', '사자', '호랑이']
>>> for idx, animal in enumerate(animals):
...     print('%d %s' %(idx, animal)) #idx+1로 바꾸면 0,1,2가 아닌 1,2,3으로 앞의 번호가 바뀜
 #%d : digit(숫자)에 사용 / %s : string(문자)에 사용
0 고양이
1 사자
2 호랑이
>>>



>>> number = [0,1,2,3,4]
>>> square = []
>>> for i in number: # squre에 append를 이용하여 리스트를 추가할 예정
...     square.append(i ** 2) # a ** b : a의 b승
...
>>> print(square)
[0, 1, 4, 9, 16]
>>>


>>>
>>> number2=[2,4,6,8]
>>> square=[]
>>> square=[x**2 for x in number2]
>>> square
[4, 16, 36, 64]
>>>


>>>
>>> number3=[0,1,2,3,4,5]
#홀수의 제곱만 값을 넣으려면
>>> odd_square = [x**2 for x in number3 if x%2==1]
#x%2==1 : x를2로 나눌 떄 나머지가 1이다 = x는 홀수이다
>>> odd_square
[1, 9, 25]
>>> even_square = [x**2 for x in number3 if x%2==0]
>>> even_square
[0, 4, 16]
>>>

 


4강_컨테이너 다루기 3



#딕셔너리 : 자바의 맵. 자바스크립트의 오브젝트. (키, 값)쌍을 저장하는 자료 구조


>>> d = {'cat':'cute', 'dog':'furry'}  #딕셔너리는 중괄호를 사용함.
>>> d['cat']
'cute'
>>> d['dog']
'furry'
>>> 'cat' in d  #'cat'이라는 키워드를 d가 갖고 있는지의 여부 확인
True
>>> d={'a':'aa'}  #홑따옴표를 이용해야 오류가 나지 않음.
>>> d
{'a': 'aa'}
>>> d={'a':'','b':'bb','c':'cc'}
>>> 'a' in d
True
#공백인 ' '도 값이 있는 걸로 봄
>>> 'd' in d
False
#'d'라는 키워드가 d에 포함이 안되어있으므로 False가 출력
>>> d.get('d', 'N/A')  #d에 d라는 키워드가 없으면, N/A로 출력하겠다.
'N/A'
>>> d


{'a': '', 'b': 'bb', 'c': 'cc'}
>>> d = {'person':10, 'cat':5, 'monkey':3}
>>> for animal in d:
...     number = d[animal] #person, cat, monkey를 모두 animal로 넣겠다.
...     print('%s은/는 %d명/마리 이다.' %(animal, number))
...
person은/는 10명/마리 이다.
cat은/는 5명/마리 이다.
monkey은/는 3명/마리 이다.




#items메소드 : 키에 해당되는 값에 접근하는 메소드
>>> for animal, number in d.items():
...     print('%s는 %d명/마리 이다.' %(animal, number))
...
person는 10명/마리 이다.
cat는 5명/마리 이다.
monkey는 3명/마리 이다.



>>>
>>> numbers = [0,1,2,3,4]
>>> even_square = {x:x**2 for x in numbers if x%2==0}
#x를 키워드로 하여 x**2를 값으로 하고, 조건으로 even을 사용
>>>
>>> even_square
{0: 0, 2: 4, 4: 16}
>>>

 


5강_컨테이너 다루기 4



>>> animals = {'dog', 'cat'}  #집합의 예시
>>> 'dog' in animals
True
>>> 'a' in animals
False
#집합 내에 키워드가 있는지의 여부에 따라 T/F 출력
>>> animals.add('lion')
>>> animals  #키워드를 추가할 때 add 사용
{'lion', 'dog', 'cat'}
>>> len(animals)
3
#키워드의 갯수를 확인할 떄 len 사용
#똑같은 키워드를 add하더라도, 중복되어서 생성되지 않음
>>> animals.remove('lion')
>>> animals
{'dog', 'cat'}
#키워드를 삭제할 떄 remove 사용
>>> for animal in animals:
...     print(animal)
...
dog
cat
#요소의 출력 시 for문 사용
>>> for idx, animal in enumerate(animals):
...     print('#%d: %s' %(idx, animal))
...
#0: dog
#1: cat
 # #%d를 작성 시 #0,#1...과 같이 번호에 #가 붙음. 
   그리고 idx+1로 넣으면 0,1이 아닌 1,2로 시작
>>> from math import sqrt
>>> number = {int(sqrt(x)) for x in range(30)} #1부터 30의 값을 x로 binding 을 시켜줌
>>> number
{0, 1, 2, 3, 4, 5}
#30의 범위 내에서 제곱수가 가능한 숫자들을 출력


#튜플. 순서가 있음. 값이 변하지 않는 리스트
#Dictionary의 키, 집합의 요소로 사용 가능. List로는 사용되지 않음
#소괄호 ()로 표현 가능
>>> d = {(a, a+1): a for a in range(10)}
>>> d
{(0, 1): 0, (1, 2): 1, (2, 3): 2, (3, 4): 3, (4, 5): 4, (5, 6): 5, (6, 7): 6, (7, 8): 7, (8, 9): 8, (9, 10): 9}
#0에서 9까지의 튜플 생성
>>> t = (2,3)
>>> type(t)
<class 'tuple'>
>>> d[t]  #dictionary 안의 튜플 t의 값 출력
2
>>> d[(5,6)]  #튜플을 직접 입력을 해서 사용 가능
5