본문 바로가기
IT 공부/Python

Python 기초 str, tuple 등..

by 쭈잇 2019. 6. 13.

Contents

    반응형
    import sys
    
    print(sys.argv)
    
    args = sys.argv[1:]
    print(args)
    # 생성
    d= {'basketball':5,'baseball':9}
    print(d,type(d))
    
    
    
    # 변경가능
    d['valleyball']=6
    print(d)
    
    # 반복(*) , 연결(+) 지원하지 않는다
    # (sequence 형이 아니기 때문에)
    print(len(d))
    
    
    # in, not in 가능 : 키만 가능
    print('soccer' in d)
    print('valleyball' in d)
    
    
    # 다양한 dict 객체 생성 방법
    
    # 1. literal
    d=dict(one=1,two=2,three=3)
    print(d)
    
    # 2. dict() 사용하는 방법
    d=dict([('one',1),('two',2),('three',3)])
    print(d)
    
    #2 dict() 사용하는 방법4 -zip을 사용하는 방법
    keys={'one','two','three'}
    values={1,2,3}
    d=dict(zip(keys,values))
    print(d)
    
    # 다양한 key 타입 (immutable 타입만 가능하다)
    d= {}
    
    d[True]='true'
    d[10]='10'
    d['twenty'] =20
    print(d)
    
    
    # key 객체
    keys=d.keys()
    print(keys,type(keys))
    for key in keys :
        print("{0}:{1}".format(keys,d[key]))
    
    # values 객체
    values=d.values()
    print(values,type (values))
    
    
    # items 객체
    # [(key1,value1),(key2,value2)...]
    items=d.items()
    print(items,type(items))
    
    
    phone={
        'A':'00-0000-0000',
        'B':'11-1111-1111',
        'C':'22-2222-2222'
    
    }
    
    p=phone
    print(p)
    print(phone)
    
    p['A']='33-333-3333'
    print(p)
    print(phone)
    
    
    p=phone.copy()
    print(p)
    print(phone)
    
    p['D']='33-333-3333'
    print(p)
    print(phone)
    
    
    
    # get() 함수
    # get을 사용한는 이유는 해당 키값에 대한 값이
    # 존재하지 않는 경우 None을 받기 위해
    print(phone.get('A'))
    print(phone.get('M'))
    
    print('=====================')
    # setDefault
    print(phone.setdefault('D','44-4444-4444'))
    print(phone)
    
    
    num=phone.pop('D')
    print(num,' ' , phone)
    
    
    #
    item = phone.popitem()
    print(item)
    
    
    
    # 업데이트
    phone.update({
        'A':'00-0000-111'
    })
    
    print(phone)
    
    # 모두 삭제하기
    phone.clear()
    
    
    
    # 리스트 생성
    l = [1,2,'python']
    
    print(l,type  (l))
    
    # indexing
    print(l[-3],l[-2],l[-1],l[0],l[1],l[2])
    
    # slicing
    l2 = l[0:len(l)]
    print(l2)
    print(l[len(l)-1::-1])
    
    # 연결 (+)
    l3 = l + [3,4,5]
    print(l3)
    
    # 확인
    print(5 in l3)
    
    # 삭제
    del l3[0]
    print(l3)
    
    #
    a=['apple','banana',10,20]
    a[2] = a[2]+90
    print(a)
    
    # 슬라이싱을 통한 치환
    a=[1,12,123,1234]
    a[0:2]=[10,20]
    print(a)
    
    a[0:2]=[10]
    print(a)
    
    a[1:2]=[20]
    print(a)
    
    a[0:2]=[40,40,40,40]
    print(a)
    
    # 슬라이싱을 통한 삭제
    a = [1,12,123,1234]
    a[1:2] = []
    print(a)
    
    a[0:] =[]
    print(a)
    
    
    # 슬라이싱을 통한 삽입
    a = [1,12,123,1234]
    
    
    # 중간
    a[1:1]=[30]
    print(a)
    
    # 마지막
    a[5:]=[123455]
    print(a)
    
    # 처음
    a[:0]=[0]
    print(a)
    
    # 여러개 삽입
    a[2:2]= [11,22,33]
    print(a)
    
    
    #
    # 객체함수
    
    
    a = [1,12,123,1234]
    # 삽입
    a.insert(1,'a')
    print(a)
    
    # 뒤에 삽입
    a.append(12345)
    print(a)
    
    # 앞에 삽입
    a.insert(0,0)
    print(a)
    
    # 제거
    a.remove(12)
    print(a)
    
    # 확장
    a.extend([55,44,33])
    print(a)
    
    
    # 스택으로 사용하기
    stack=[]
    stack.append(10)
    stack.append(20)
    stack.append(30)
    
    print(stack)
    print(stack.pop(),' ' , stack)
    
    # 큐로 사용하기
    
    q = [1,2]
    q.append(3)
    q.append(4)
    print(q)
    print(q.pop(0), ' ',q)
    
    
    # sort()
    l3=[1,53,44,551,12]
    l3.sort()
    print(l3)
    
    l3.sort(reverse=True)
    print(l3)
    
    l3=[23,541,213,11,434,223,2]
    l3.sort(key=str)
    print(l3)
    
    l3=[23,541,213,11,434,223,2]
    l3.sort(key=int)
    print(l3)
    # cf. 내장(전역) 함수 sorted
    l3=[10,20,23,1234,332,22]
    
    l4 = sorted(l3)
    print(l4)
    
    l4=sorted(l3,reverse=True)
    print(l4)
    
    l3=[10,32,54,23,88,91,47]
    def f(n) :
        return n % 10
    
    l4=sorted(l3,key=f)
    print(l4)
    
    print(~5) # -6
    #  0 0 0 0  0 1 0 1
    #  1 1 1 1  1 0 1 0
    
    #  1 1 1 1  1 0 0 1
    #  0 0 0 0  0 1 1 0 -> 6
    
    
    
    # 뒤집은 다음에 + 1 ( 2의보수 사용 )
    
    # << 연산
    
    a=4
    print(a>>1)
    
    a=-4
    print(a>>1)
    
    # bit and or, exclusive or
    
    #  011
    a=3
    print(a&2) # 011 010 ->  010
    print(a|8) # 0011 1000 -> 1011
    print(a^2) # 011 010 -> 001
    print(a^a) # 011 011 -> 000
    # packing : tuple 만 가능하다
    t = 10,20,30 , 'python'
    print(t,type(t))
    
    # unpacking
    a,b,c,d = t
    print(a,b,c,d)
    
    # 에러
    # a,b,c = t
    
    
    # unpacking extended
    t = (1,2,3,4,5)
    a, *b=t
    print(a,b)
    
    *a, b =t
    print(a,b)
    
    a,b,*c = t
    print(a,b,c)
    
    a,*b,c= t
    print(a,b,c)
    
    # cf. 여러개 파라미터를 받는 함수
    
    def sum(*num) :
        sum=0
        for n in num :
            sum+=n
        return sum
    
    print(sum(1,2))
    print(sum(1,2,3))
    print(sum(1,2,3,4))
    
    
    def printf(format,*s):
        return print(format % s)
    
    
    printf("name: %s, age : %d ", "둘리",10)
     
    
    #기본연산
    
    nums=[1,2,2,3,4,6]
    s=set(nums)
    print(s)
    
    s={1,4,33,2,4  }
    print(s,type(s))
    
    
    s.add(7)
    print(s)
    
    s.discard(4)
    print(s)
    
    # 존재하지 않는 객체 삭제시 예외발생
    # s.remove(1111111)
    
    s.update({99,88})
    print(s)
    
    s.clear()
    print(s)
    
    # 수학 집합 관련 객체함수
    s1={1,2,3,4,5,6,7,8,9,10}
    s2={10,20,30}
    
    s3=s1.union(s2)
    print(s3)
    
    s3=s1.intersection(s2)
    print(s3)
    
    s3=s1.difference(s2)
    print(s3)
    
    s3=s1.symmetric_difference(s2)
    print(s3)
    
    
    print(s1.issuperset(s3))
    
    
    # 한 줄 문자열 정의
    
    
    
    
    s= ''
    str1='Hello World'
    print(type(s),type(str1))
    print(isinstance(str1,str))
    
    # 여러줄 문자열
    str2= '''ABC
    1234
    간다
    '''
    
    print(str2)
    
    '''
    여기는 주석입니다.
    여러 라인 주석을 대체할 수있습니다.
    '''
    
    # escape
    print('Hello\nWorld\nI Say "Hello WOrld" ')
    
    #
    # 문자열 연산
    #
    
    
    str1='First String'
    str2='Second String'
    # 1. 인덱싱
    print(str1[0],str1[1],str1[2])
    print(str1[-1],str1[-2],str1[-3])
    
    # 2. Slicing
    # s[start:stop:step]
    str3= str2[2:5]
    print(str3)
    print(str2[2:len(str2):1])
    print(str2[2:])
    
    s = 'Python'
    print(s[-1]) # 마지막문자
    print(s[-2:]) # 마지막 2개문자
    print(s[:-2])
    
    print(s[::-1]) #reverse
    print(s[1::-1]) # 1,2번째 문자
    print(s[::2])
    print(s[:-3:-1]) # 마지막 2개 문자
    print(s[-3::-1]) #마지막2개 문자 제외한 전체 문자열
    
    #연결 (+)
    print(str1+' ' +str2)
    
    
    # 문자열 객체 연결은 문자열끼리만 할 수 있다.
    name= '둘리'
    age = 10
    # print(name + 10)
    
    print(str1*3)
    print(len(str1))
    
    # in, not in연산
    print('F' in str1)
    print('S' not in str1)
    
    # str 객체는immutable이다
    # str1[0] = 'f'
    
    # 서식 ( formatting) = fromat 함수
    print("name :"+name+".age:"+str(age))
    print("name:"+format(name,"s")+", age: "+format(age,"d"))
    
    # 서식 : 튜플을 사용한 방식
    f =  "name: %s, age : %d"
    print(f % (name,age))
    print(f % ('또치',20))
    
    # 서식 : 딕셔너리를 사용한 방식
    f = "name : %(n)s, age: %(a)d"
    print(f  % {'n':'졸려','a':23})
    
    
    #
    # 객체함수
    #
    
    # 1. 대소문자 관련
    s = 'i Like Python'
    print( s.upper(),' ',s.lower(),' ',s.swapcase())
    print(s.capitalize(),' ',s.title())
    
    # 2. 검색
    s = 'I Like Python. I Like Java Also'
    print(s.count('Like'))
    print(s.find("Like"))
    print(s.find("Like",5))
    # 없다면 -1
    print(s.find('JavaScript'))
    print(s.rfind('Like'))
    
    # 없다면 exception
    # print(s.index("Like"))
    
    print(s.rindex('Like'))
    print(s.startswith("I Like"))
    print(s.startswith("Like",2))
    
    print(s.endswith('Java',0,26))
    
    # 편집과 치환
    s = '   spam ans ham    '
    print('------',s.strip(),'------')
    print('------',s.rstrip(),'------')
    print('------',s.lstrip(),'------')
    
    s='<><abc><><defg><><>'
    print('-------',s.strip('><')+"--------")
    print('-------',s.strip('<>')+"--------")
    
    s='Hello Java'
    print(s.replace('Java','Python'))
    
    # 분리 & 결합
    s = 'spam and ham'
    t= s.split(' and ')
    print(t,type(t))
    
    s2 = ':'.join(t)
    print(s2)
    
    s3 = 'one:two:three:four:five'
    print(s3.split(':'))
    print(s3.split(':',2))
    print(s3.rsplit(':',2))
    
    lines = ''' 1st line
    2nd line
    3rd line
    4th line
    '''
    print(lines.split('\n'))
    print(lines.splitlines())
    
    print('======================')
    # 판별
    print('2134'.isdigit())
    print('2134'.isalpha())
    print('\t'.isspace())
    
    
    # '0' 채우기
    print('20'.zfill(5))
    
    
    # 서식 : 객체함수
    print('name:{}, age{}'.format('둘리',10))
    print('name:{0}, age{1}'.format('둘리',10))
    print('name:{1}, age{0}'.format(10,'ㅋㅋ'))
    print('{:3}의 제곱근은 {:.7}'.format(2,2**0.5))
    print('name:{n}, age{a}'.format_map({'n':'이휴','a':11}))
    
     
    
    # 튜플 생성
    
    t= () #공튜플
    t=(1,) # 항목이 하나일 때는 반드시 , 콤마 사용
    t=(1,2,3)
    print(t,type(t))
    
    # sequence 지원연산
    
    #인덱싱
    print(t[-3],t[-2],t[-1],t[0],t[1],t[2])
    
    # 슬라이싱
    print(t[1:3])
    print(t[::-1])
    
    
    # 반복
    print(t*2)
    
    
    print(t+(4,))
    
    print(len(t))
    
    print(4 not in t)
    
    # tuple은 immutable 이다
    # t[0]=100
    
    # 여러개 값의 대입
    x,y,z = 10,20,30
    print(x, y, z)
    
    # swap
    x, y=10,20
    x,y=y,x
    print(x,' ',y)
    
    
    # 객체함수: 많지 않다
    t= (20,30,10,20)
    print(t.index(20))
    print(t.count(20))
    
    #변환
    t=(1,2,3,3)
    print(t)
    
    # tuple -> set
    s = set(t)
    print(s, type(s))
    
    # tuple -> list
    l = list(t)
    print(l,type(l))
    
     
    반응형

    'IT 공부 > Python' 카테고리의 다른 글

    Python 크롤링 연습  (0) 2019.06.18
    Python 클래스(1) 클래스, 인스턴스 메서드/ 멤버, 인스턴스 변  (0) 2019.06.17
    Python 파일입출력 예제  (0) 2019.06.17
    Python 모듈, import  (0) 2019.06.17
    Python 기초  (0) 2019.06.12