ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 타입과 연산자들
    Python 2022. 5. 10. 23:33

    파이썬의 데이터 타입에는

    Boolean

    Numbers

    String

    Bytes

    Lists

    Tuples

    Sets

    Dictionaries

    가 있다. 변수로 지정해보면 대충 이런 모습이다.

    v_str = "Niceman"
    v_bool = True
    v_float = 10.3
    v_int = 7
    v_dict = {
        "name" : "Kim",
        "age" : 25
    }
    v_list = [3, 5, 7]
    v_tuple = 3, 5, 7
    v_set = {7, 8, 9}
    
    print(type())

    print(type())안에 변수를 넣으면 타입을 알 수 있다.

    하나하나 알아보자.

     

    1. 숫자형과 연산자

    (+, -, *, /, //(몫), %(나머지), **(지수))

    숫자는

    i1 = 39
    i2 = 939
    big_int1 = 9999999999999999999999999999
    f1 = 1.234
    f3 = .5 #0.5
    f4 = 10. #10.0

    이렇게 다양하게 할당할 수 있고, 위의 숫자들은 연산자로 연산이 모두 가능하다.

    그리고 int, float, complex(복소수)라는 형 들을 이용해서

    float(4) 이런 식으로 형변환을 할 수 있다. int('3') 이렇게 3이라는 문자를 정수로 바꿔도 3이라는 정수로 형변환이 된다.

     

    그리고, y = y + 100 을 y += 100으로 바꿔서 쓸 수 있다. 이런걸 단항연산자라고 한다.

    마지막으로, 수치 연산 함수를 알아보자.

    print(abs(-8)) #절댓값
    n, m = divmod(100, 8) #몫은 n에 나머지는 m에
    
    import math #수학관련 메소드사용
    print(math.ceil(5.1)) #5.1보다 크면서 가장 작은 정수 6이나옴
    print(math.floor(4.9)) #4.9보다 작으면서 가장 큰 정수 4가나옴

    위처럼 여러가지 함수를 사용할 수 있고, import math를 써서 math라이브러리를 사용할 수 있다.

     

    2. 문자형과 연산자

    str1 = "I am Boy."

    문자열은 기본적으로 이렇게 선언하며, 빈 문자열도 '' 로 선언 가능하다.

    또는

    str4 = str('ace')

    위처럼 str을 써서 명시적으로 선언할 수 있다.

     

    문자열의 길이를 구할 땐 len함수를 이용한다.

    str1 = "I am Boy."
    
    print(len(str1)) #띄어쓰기와 온점까지 9가 나옴

    그리고 Raw String을 알아보자.

    raw_s1 = r'C:\Programs\Test\Bin'
    rwa_s2 = r"\\a\\a"

    이렇게 r을 입력하고 ' ' 나 " " 안에 입력하는건 escape문이 통하지 않는다. 즉, 역슬래쉬를 그냥 사용가능하다.

     

    이제, 멀티라인이란걸 해보자. """ """안에 글을 쓰며 enter를 치면 역슬래시를 써서 enter를 알려주면 된다.

    multi = \
    """
    문자열
    
    멀티라인
    
    테스트
    """

    위를 print로 출력하면 오른쪽처럼 enter가 입력되어 나오게 된다.

    문자열 연산은 문자끼리만 더하면 붙여주는 역할을 하고, 곱하기는 반복의 역할을 한다.

    그리고 in을 알아보면, 'a' in 문자열변수를 사용하면, 문자열변수에 a가 있냐 물어보는게 된다.

    str_o4 = "Niceman"
    
    print('a' in str_o4) #true출력

    답은 true / false로 출력이 되며, not in을 쓰면 없냐?로 물어볼 수 있다.

     

    문자열의 형 변환은

    print(str(77)
    print(str(10.4))

    이렇게 str을 사용하며, 77과 10.4처럼 정수나 실수도 문자형으로 바꿀 수 있다.

     

    마지막으로, 문자열 함수를 알아보자.

    a = 'niceman'
    b = 'orange'
    
    print(b.islower()) #모두 소문자니? 하나라도 대문자면 false
    print(b.endswith('e')) #끝 글자가 e로 끝나니?
    print(a.capitalize()) #첫글자를 대문자로 가져다줌
    print(a.replace('nice', 'good')) #a변수에서 nice를 찾아 good으로 바꿔줌
    print(list(reversed(b))) #리스트형식으로 e g n a r o로 출력됨
    print(a.index('orange')) #orange에서 a가 몇번째 있냐 여기선 2

    위와 같은 다양한 함수가 있고,

    문자열 슬라이싱은

    a = 'niceman'
    b = 'orange'
    
    print(a[0:3]) #nic가 출력됨 0부터 3보다 작은 곳 까지
    print(a[0:len(a)]) #이렇게하면 끝까지 나옴 [:]이렇게해도 첨부터 끝
    print(a[:4]) #nice가 출력됨 앞에 아무것도 없으면 처음부터란 뜻
    
    print(b[0:4:2]) #oran에서 하나씩 건너뛰기 하므로 oa만 나옴 1은 안뜀 2부터 한칸 씩 뜀
    print(b[1:-2]) #-1이 e -2가 g이므로 ran만 나옴
    print(b[::-1]) #거꾸로나오게함

    이런 식으로, [ ]로 슬라이싱 처리를 할 수 있다.

     

    3. 자료형 (리스트, 튜플)

    리스트는 순서가 있고, 중복이 가능하며, 수정과 삭제가 자유롭다

    #리스트 (순서o, 중복o, 수정o, 삭제o)
    
    #선언
    a=[]
    b=list()
    c=[1,2,3,4]
    d=[10,100,'pen','banana']
    e=[10,100,['pen','banana']]

    선언부터 살펴보면, [] 대괄호 or list()로 선언하며, 숫자와 문자형을 같이 쓰거나 리스트안에 리스트를 넣어도 된다.

     

    인덱싱은

    d=[10,100,'pen','banana']
    e=[10,100,['pen','banana']]
    #인덱싱
    print(d[3]) #banana출력
    print(d[-2]) #banana출력
    print(e[2][1]) #banana출력
    
    #슬라이싱
    print(d[0:3]) #[10,100,'pen']나옴 0부터 3이전까지 나옴

    위처럼 []안에 자릿수를 입력해서 출력하며, 리스트안에 리스트가 있을땐, 대괄호를 두개써주면 된다.

    그리고, 슬라이싱도 가능하다.

     

    연산은

    c=[1,2,3,4]
    d=[10,100,'pen','banana']
    #연산
    print(c+d)
    print(c*3) #리스트가 3개가 됨
    print(str(c[0]) + 'hi') #1hi가 나옴

    리스트끼리 더하면 리스트두개가 합쳐지며, 리스트에 곱하기를 수행하면 길이가 늘어난다.

     

    수정과 삭제를 보면

    #수정
    c[0] = 77 #c는 [77,2,3,4]
    c[1:2] = [100,1000,10000] #c는 [77,100,1000,10000,3,4]
    c[1] = ['a','b','c'] #c는 [77, ['a','b','c'],1000,10000,3,4]

    위처럼 인덱싱해서 수정가능하며, 슬라이싱으로 리스트를 넣게 되면 값들이 들어가서 합쳐지고, 인덱싱으로 리스트를 넣게 되면 리스트째로 들어가게 된다.

    #삭제
    del c[1] # [77,100,1000,3,4]

    삭제는, del키워드를 이용해서 원하는 부분을 인덱싱하면 된다.

     

    리스트함수를 몇 개만 알아보면,

    #리스트함수
    y = [5,2,3,1,4]
    y.append(6) # 5,2,3,1,4,6 끝에다가 원소 추가
    y.sort() #1,2,3,4,5,6 으로 정렬
    y.reverse() #6,5,4,3,2,1 으로 정렬
    y.insert(2,7) #2번인덱스에 7을 넣는다. 6,5,7,4,3,2,1
    y.remove(2) #2를 찾아서 지움 즉,del은 인덱스 remove는 값을 찾음 6,5,7,4,3,1
    y.pop() #맨 마지막을 꺼내서 없앰 6,5,7,4,3
    ex = [88,77]
    y.extend(ex) #6,5,7,4,3,88,77 이렇게 연장해줌 만약 append(ex)하면 6,5,7,4,3,[88,77]이렇게 리스트로 들어감

    위 처럼 여러 개가 있다.

     

    그리고, 리스트 컴프리헨션이라고 리스트를 쉽게 만드는 문법이 있다.

    #리스트 컴프리핸션
    numbers = [x for x in range(1,101)] #앞의 x는 리스트에 할당되는 x고, 뒤에 x는 range의 x이다.

    이 리스트 컴프리헨션은 뒤에 if를 붙일 수 있다.

    numbers = [x for x in range(1,101) if x % 2 != 0] #홀수만 출력

     

    이제, 튜플을 알아보자

    튜플은 순서가 있고, 중복이 가능하며, 수정과 삭제가 불가능하다.

    #튜플 (순서o, 중복o, 수정x, 삭제x)
    
    #한번 선언되면 변경되지 않는 그런 중요한 값에 사용한다.
    a=()
    b=(1,)
    c=(1,2,3,4)
    d=(10,100,('a','b','c'))
    
    #인덱싱, 슬라이싱
    print(c[2]) #3이 출력됨
    print(d[2][2]) #c가 출력됨
    print(d[2:]) #'a','b','c' 가 나옴
    #리스트와 마찬가지로 연산도 가능함
    
    #튜플함수
    z=(5,2,1,3,4)
    z.index(3) #3이 있는 곳의 index를 반환 즉, 3이 나옴
    z.count(2) #이 튜플에 2가 몇개가 있냐 1이 나옴

    위처럼 튜플은 () 소괄호로 선언하며,  인덱싱과 슬라이싱은 리스트와 같고, 수정삭제가 안되므로 튜플 함수는 index,count와 같이 안의 값들을 확인하는 함수가 많다.

     

    4. 자료형 (리스트, 튜플)

    #딕셔너리 (Dictionary) 순서x, 중복x, 수정ㅇ, 삭제ㅇ
    
    #key, value로 이루어짐(Json형식과 비슷)
    #선언
    a = {'name' : 'Kim', 'Phone' : '010-7777-7777', 'birth' : 870214}
    b = {'arr' : [1,2,3,4]}
    
    #출력
    print(a['name'])
    print(a.get('name'))
    print(b['arr'][1:2]) #출력에 슬라이싱도 가능
    
    #딕셔너리 추가
    a['address'] = 'Seoul'
    
    #Key, values, items
    #'name' : 'Kim' 에서 왼쪽이 key, 오른쪽이 value, 그 한쌍을 item이라고 함.
    #만약 a.keys a.values로 키나 값들의 배열을 가지고오면 list()안에 넣어 형변환을 해야 사용함
    # 'name' in a 이렇게 in, not in 문법 사용가능

    딕셔너린 'key' : 'value'로 이루어진 데이터형이며, 순서가 없고, 중복이 불가능하다. 그리고 수정과 삭제가 가능하다.

    선언은 {} 중괄호 안에 'key' : 'value'형태로 하며, 

    출력시엔 딕셔너리이름.['key'] / 딕셔너리이름.get('key') 이렇게 그냥[]을 쓰거나 get()을 쓰는 두가지 방법이 있다.

    딕셔너리를 추가할 땐 딕셔너리이름['추가할 key'] = '추가할 value' 를 쓰면 된다.

    마지막으로, a.keys와 a.values를 쓰면 a 딕셔너리의 key들과 value들만 모인 리스트와 비슷한 것을 출력할 수 있고, 리스트 문법을 쓰기 위해선 list()로 형변환을 해주어야 한다. 그리고 key : value이렇게 한쌍을 item이라고 한다. 

     

    이제, 집합을 알아보자.

    #집합(Sets) 순서x, 중복x
    a = set()
    b = set([1,2,3,4])
    c = set([1,2,3,3]) # 출력하면 1,2,3만 나옴
    #set은 주로 변환해서 사용한다.
    #t = tuple(a), l = list(a) 이런 식으로

    집합은 순서가 없고, 중복을 허용하지 않으며, set()안에 작성한다.set()안에서 []대괄호 안에 주로 사용하며, 형을 변환해서 사용할 때가 있다.

    s1 = set([1,2,3,4,5,6])
    s2 = set([4,5,6,7,8,9])
    print(s1.intersection(s2)) #4,5,6나옴 s1 & s2도 가능
    print(s1.union(s2)) #1,2,3,4,5,6,7,8,9나옴 s1 | s2도 가능
    print(s1.difference(s2)) #1,2,3나옴 s1 - s2도 가능
    
    #추가제거
    s3 = set([7,8,9,10])
    s3.add(5) #추가 중복넣으면 자동으로 안들어감
    s3.remove(15)

    그리고 집합이므로 교집합 차집합 합집합이 가능하며 각각 기호로 대체가 가능하다.

    마지막으로 set도 add로 추가하고 remove로 제거가 가능하다.

    'Python' 카테고리의 다른 글

    함수 및 람다  (0) 2022.06.07
    반복문  (0) 2022.05.23
    조건문  (0) 2022.05.23
    가상환경 설정 및 패키지 설치  (0) 2022.05.09
    print함수의 이해  (0) 2022.05.06

    댓글

Designed by Tistory.