λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ¦„ | μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅/μ½”ν…Œμš© 파이썬 문법 λͺ¨μŒ

[Python] 파이썬 μ½”λ”©ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ κ°œλ… 정리

by KASSID 2023. 1. 4.

λͺ©μ°¨

    728x90

    λ°©ν•™λ™μ•ˆ μ½”λ”©ν…ŒμŠ€νŠΈ 곡뢀λ₯Ό ν•˜κΈ° μœ„ν•΄μ„œ 두고두고 λ³Ό κ²Έ

    νŒŒμ΄μ¬μ— κ΄€λ ¨λœ κ°„λ‹¨ν•œ κ°œλ…λ“€μ„ ν•œ νŽ˜μ΄μ§€μ— μ •λ¦¬ν•΄λ³΄μ•˜λ‹€!

     

    μž…λ ₯κ³Ό 좜λ ₯

    μž…λ ₯

    - input() : μ‚¬μš©μžλ‘œλΆ€ν„° λ¬Έμžμ—΄ ν•œ 쀄을 μž…λ ₯λ°›λŠ”λ‹€.

    - map() : λͺ¨λ“  μ›μ†Œμ— μ „λ‹¬ν•œ ν•¨μˆ˜ ν•˜λ‚˜μ”© μ μš©ν•œ 객체 λ°˜ν™˜

     

    # νŠœν”Œμ˜ ν˜•νƒœμ˜ κ°μ²΄μ΄λ―€λ‘œ λ‹€μŒκ³Ό 같이 μ–ΈνŒ¨ν‚Ή κ°€λŠ₯
    a, b, c = map(int, input().split())
    # list둜 λ³€ν™˜ κ°€λŠ₯
    data = list(map(int, input().split()))

     

    μž…λ ₯λŸ‰μœΌλ‘œ μΈν•œ μˆ˜ν–‰μ‹œκ°„ 초과 였λ₯˜ λ°œμƒμ‹œ

    μ‹œμŠ€ν…œ λΌμ΄λΈŒλŸ¬λ¦¬μ— μ •μ˜λœ readline() 이용

    import sys
    str = sys.stdin.readline().rstrip() # rstrip()으둜 μ€„λ°”κΏˆ μ‚­μ œ
    print(str)

     

    좜λ ₯

    print() 이용, endλ₯Ό μ΄μš©ν•΄ 끝문자 지정가λŠ₯

    print("HELLO") # 좜λ ₯ ν›„ μ€„λ°”κΏˆ
    print("HELLO",end=" ") #좜λ ₯ ν›„ ν•œ μΉΈ 곡백

    μ½”λ“œ μˆ˜ν–‰μ‹œκ°„ μΈ‘μ •

    import time
    start_time = time.time() # μΈ‘μ • μ‹œμž‘
    
    # ν”„λ‘œκ·Έλž¨ μ†ŒμŠ€μ½”λ“œ
    
    end_time = time.time() # μΈ‘μ • μ’…λ£Œ
    print(f"time: {end_time - start_time}") # μˆ˜ν–‰ μ‹œκ°„ 좜λ ₯
    # print(f"time: {end_time - start_time:.6f}") # μˆ˜ν–‰ μ‹œκ°„ 좜λ ₯

    μ½”ν…Œμ—μ„œ ν†΅μƒμ μœΌλ‘œ 5초 이내에 μˆ˜ν–‰ν•˜λŠ” 것이 μ‹œκ°„λ³΅μž‘λ„ μΈ‘λ©΄μ—μ„œ 효율적인 μ½”λ“œλΌκ³  ν•œλ‹€!


    μžλ£Œν˜•

    μ •μˆ˜ν˜• μ‹€μˆ˜ν˜• λ³΅μ†Œμˆ˜ν˜• λ¬Έμžμ—΄ 리슀트 νŠœν”Œ λ”•μ…”λ„ˆλ¦¬

     

    μ‹€μˆ˜ν˜•

    μ‹€μˆ˜ν˜• 주의!
    컴퓨터 μ‹œμŠ€ν…œ λ‚΄μ˜ 데이터 μ²˜λ¦¬μ— μ‚¬μš”λ˜λŠ” 것은 2μ§„μˆ˜ μ²΄κ³„λ‘œ, μ‹€μˆ˜λ₯Ό μ •ν™•νžˆ ν‘œν˜„λͺ»ν•¨

    round()λ₯Ό μ΄μš©ν•˜κΈ°

    a = .3+.6
    if round(a, 4) == .9: # round() μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ False
        print(True)
    else:
        print(False)
        
    >>> True

     

    μ§€μˆ˜ν‘œν˜„λ²•

    e ν˜Ήμ€ E둜 μ§€μˆ˜λ₯Ό ν‘œν˜„ν•  수 μžˆλ‹€. e뒀에 μ˜€λŠ” μˆ˜λŠ” 10의 μ§€μˆ˜λ₯Ό ν‘œν˜„ν•˜λŠ”λ°

    λ§Œμ•½ 1e2 라면 10^2 = 100 이고 2e-2 라면 2*10^-2 = 0.02λ₯Ό μ˜λ―Έν•œλ‹€.

     

    수 μžλ£Œν˜• μ—°μ‚°μž

    + - *

    / : λ‚˜λˆˆ κ²°κ³Ό μ‹€μˆ˜ν˜•μœΌλ‘œ λ°˜ν™˜

    // : λ‚˜λˆˆ 결과의 λͺ« λ°˜ν™˜

    % : λ‚˜λˆˆ 결과의 λ‚˜λ¨Έμ§€ λ°˜ν™˜

    ** : 멱수λ₯Ό λ°˜ν™˜

     

    λ¬Έμžμ—΄

    - 인덱싱과 μŠ¬λΌμ΄μ‹±μ΄ κ°€λŠ₯ν•˜λ‹€. κ·ΈλŸ¬λ‚˜ ν•΄λ‹Ή 인덱슀 변경은 λΆˆκ°€

    - '+' : λ¬Έμžμ—΄μ΄ μ—°κ²°λœλ‹€.

    - '*' : λ¬Έμžμ—΄κ³Ό μ •μˆ˜μ™€ κ³±ν•˜λ©΄ 같은 λ¬Έμžμ—΄ 반볡

    λ¬Έμžμ—΄ λ©”μ†Œλ“œ

    count, find, index, join, upper, lower, strip(+ l,r), replace, split

    ",".join("abcd") #a,b,c,d
    ",".join(['a', 'b', 'c', 'd']) #a,b,c,d
    
    # 리슀트 --> λ¬Έμžμ—΄ λ³€ν™˜
    arr = ['a', 'b', 'c', 'd']
    result1 = str(arr)
    result2 = ''.join(arr)
    print(type(result1), result1) # <class 'str'> ['a', 'b', 'c', 'd'] # ν˜•νƒœ κ·ΈλŒ€λ‘œ λ¬Έμžμ—΄λ‘œ
    print(type(result2), result2) # <class 'str'> abcd

     

    리슀트

    - μ—¬λŸ¬κ°œμ˜ 데이터λ₯Ό 닀루기 μœ„ν•œ μžλ£Œν˜•

    - ν•˜λ‚˜μ˜ λ¦¬μŠ€νŠΈμ— μ„œλ‘œ λ‹€λ₯Έ μžλ£Œν˜• 데이터 곡쑴가λŠ₯

    - μΈλ±μŠ€μ™€ μŠ¬λΌμ΄μ‹± μ΄μš©κ°€λŠ₯

    - λ‚΄λΆ€μ˜ 값을 인덱슀λ₯Ό μ΄μš©ν•˜μ—¬ μ ‘κ·Ό ν›„ λ³€κ²½ κ°€λŠ₯

     

    리슀트 인덱싱&μŠ¬λΌμ΄μ‹±

    arr = [1,2,3,4]
    
    # 인덱싱
    arr[0] # 1
    arr[-1] # 4
    
    # μŠ¬λΌμ΄μ‹±
    arr[1:3] # [2, 3]
    arr[1:3:1] # [2, 3] # μœ„μ™€ 같은 κ²°κ³Ό
    arr[::2] # [1, 3] # 전체 λŒ€μƒ μ•žλΆ€ν„° 2μΉΈ μ”©
    arr[::-1] # [4, 3, 2, 1] # μ—­μˆœμœΌλ‘œ μŠ¬λΌμ΄μ‹±
    arr[::-2] # [4, 2]

     

    리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜

    리슀트 μ΄ˆκΈ°ν™”μ‹œ μ‚¬μš©ν•˜λŠ” 방법

    arr = [0 for i in range(0, 4)]
    print(arr) # [0, 0, 0, 0]
    
    arr = [i for i in range(10) if i % 2 == 0]
    print(arr) # # 0~9사이 짝수
    
    # 2차원 리슀트
    n = 3
    m = 2
    arr = [n * [0] for i in range(m)]
    
    print(arr) # [[0, 0, 0], [0, 0, 0]]

    리슀트 λ©”μ†Œλ“œ

    append, sort, sort(reverse=True), reverse, insert, count, remove

    arr = [1,2,3,4]
    
    arr.append(5);print(arr) 
    arr.sort();print(arr) 
    arr.sort(reverse=True);print(arr) 
    arr.reverse();print(arr) 
    arr.insert(10,1);print(arr) # λ²”μœ„ λ„˜μœΌλ©΄ μžλ™μœΌλ‘œ 계산
    print(arr.count(1))
    arr.remove(1);print(arr) # 쑰건만쑱 μ›μ†Œ 쀑 κ°€μž₯ μ•ž ν•˜λ‚˜ μ‚­μ œ

     

    νŠœν”Œ

    - ν•œ 번 μ„ μ–Έλœ 값은 λ³€κ²½ λΆˆκ°€

    - λ¦¬μŠ€νŠΈμ— λΉ„ν•΄ κ³΅κ°„νš¨μœ¨μ 

    - ν™œμš© μ˜ˆμ‹œ

     - μ„œλ‘œ λ‹€λ₯Έ μ„±μ§ˆμ˜ 데이터 λ¬Άμ–΄μ„œ 관리할 λ•Œ
     - μ΅œλ‹¨ 경둜 μ•Œκ³ λ¦¬μ¦˜μ—μ„œ (W, Num) ν˜•νƒœλ‘œ μ‚¬μš©ν•  λ•Œ
     - ν•΄μ‹±ν•  λ•Œ (데이터, ν•΄μ‹± ν‚€)
     - λ¦¬μŠ€νŠΈλ³΄λ‹€ λ©”λͺ¨λ¦¬ 효율적으둜 μ‚¬μš©ν•  λ•Œ

     

    λ”•μ…”λ„ˆλ¦¬

    - λΉ„μˆœμ°¨μ  μžλ£Œν˜•

    - Key와 value의 μŒμ„ λ°μ΄ν„°λ‘œ 가짐

    - 'λ³€κ²½ λΆˆκ°€λŠ₯ν•œ μžλ£Œν˜•'을 Key둜 μ‚¬μš© κ°€λŠ₯

    - λ‚΄λΆ€μ μœΌλ‘œ ν•΄μ‹œ ν…Œμ΄λΈ”μ„ μ΄μš©ν•˜λ―€λ‘œ λ°μ΄ν„°μ˜ '쑰회 및 μˆ˜μ •μ΄ O(1)'의 μ‹œκ°„λ³΅μž‘λ„

    # 방법 1
    name = '이름'
    
    info = {
      name: 'Kassid',
      'λ‚˜μ΄': 25,
      5 : 25
    }
    print(info) # {'이름': 'Kassid', 'λ‚˜μ΄': 25, 5: 25}
    
    # 방법 2
    info1 = dict()
    info1['이름'] = 'Kassid'
    info1['λ‚˜μ΄'] = 25

    Key λ°μ΄ν„°λ§Œ 뽑기 : keys()

    κ°’ λ°μ΄ν„°λ§Œ 뽑기 : values()

     

    집합 μžλ£Œν˜•

    - 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.

    - μˆœμ„œκ°€ μ—†λ‹€.

    - λ°μ΄ν„°μ˜ '쑰회 및 μˆ˜μ •μ΄ O(1)'의 μ‹œκ°„λ³΅μž‘λ„

    data = set([1, 2, 3, 4, 4, 4]) # {1, 2, 3, 4, 5}. 4쀑볡 제거
    data = {1, 1, 2, 2, 3, 4, 4, 5, 5 } # {1, 2, 3, 4, 5}

    집합 μžλ£Œν˜• μ—°μ‚°μž

    a = {1, 2, 3, 4 }
    b = {1, 4, 5, 6 }
    # ν•©
    a | b # {1, 2, 3, 4, 5, 6}
    
    #ꡐ
    a & b # {1, 4}
    
    #μ°¨
    a - b # {2, 3}

    global ν‚€μ›Œλ“œ

    - ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ ν•¨μˆ˜ λ°–μ˜ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κ³ μž ν•  λ•Œ

    - λ‹¨μˆœ 좜λ ₯or μ°Έμ‘°λŠ” global 없이 μ°Έμ‘° κ°€λŠ₯ν•˜λ‹€.

    - list의 λ‚΄λΆ€ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•΄ μ‚¬μš©ν•˜λŠ” 것 λ˜ν•œ 였λ₯˜ λ―Έλ°œμƒ

    a = 0
    def func():
        global a
        a += 1
        
    func();print(a) # a의 κ°’ λ³€κ²½
    # 1
    
    b = 10
    def func2():
        print(b+20)
    func2();print(b) # λ‹¨μˆœ κ°’λ§Œ μ°Έμ‘° # b의 κ°’ λ―Έλ³€κ²½
    # 30 10
    
    arr = [1, 2 ,3, 4, 5]
    def func3():
        arr.append(10)
    func3();print(arr)
    # [1, 2, 3, 4, 5, 10]

    ν•¨μˆ˜

    ν•¨μˆ˜μ˜ λ°˜ν™˜ μ—¬λŸ¬ 개 ν•œλ²ˆμ— κ°€λŠ₯

    μ•„λž˜μ™€ 같은 ν˜•νƒœλ‘œ μ—¬λŸ¬ 값을 ν•œ λ²ˆμ— λ°˜ν™˜ν•  수 μžˆλ‹€.

    def func(a,b):
    	return a+b, a-b, a*b, a/b
    
    A,B,C,D = func(10,3)

     

    lambda

    λ‹€μŒκ³Ό 같은 κ²½μš°μ— ν™œμš©ν•œλ‹€.

    - ν•¨μˆ˜μ˜ κ°„λ‹¨ν•œ μž‘μ„±
    - ν•¨μˆ˜κ°€ ν•œλ²ˆλ§Œ 쓰이고 λ§ˆλŠ” 경우 κ°€λŠ₯에 ν•œμ€„λ‘œ ν‘œν˜„ κ°€λŠ₯
    - ν•¨μˆ˜ 자체λ₯Ό μž…λ ₯으둜 λ°›λŠ” ν•¨μˆ˜μ—μ„œ μœ μš©ν•¨
    print((lambda a, b: a + b)(1, 2)) # 3
    
    list1 = [1, 2, 3]
    list2 = [4, 5, 6]
    # 각각의 μ›μ†Œλ₯Ό λ”ν•˜κΈ°
    result = list(map(lambda a,b: a + b, list1, list2))
    # [5, 7, 9]

     



    μœ μš©ν•œ 팁

    setrecursionlimit μ„€μ •

    νŒŒμ΄μ¬μ—μ„œ μž¬κ·€ν™œμš© λ¬Έμ œμ—μ„œ ν•„μˆ˜μ μœΌλ‘œ ν•„μš”ν•œ μ½”λ“œ

    μž¬κ·€ 깊이 μ œν•œμ„ λŠ˜λ €μ€€λ‹€.

    import sys
    sys.setrecursionlimit(10 ** 6)

    λŒ“κΈ€