Developer

Python(문자열 함수, IO, 함수) 본문

Programming Language/Python

Python(문자열 함수, IO, 함수)

DPhater 2021. 1. 19. 19:58

List

  • 인덱싱

    numbers = [4 ,3, 2, 2 , 4] 
    numbers[3] #2 
    numbers[0] #4 
    numbers[-1] #4
  • 슬라이싱

    numbers[1,2,3,4,5,6,7] 
    numbers[:3] # 1 2 3 
    numbers[::-1] # 7 6 5 4 3 2 1
    numbers[:-1] # 1 2 3 4 5 6
  • 리스트 연산

    nums1 = [1, 3, 5, 6] 
    nums2 = [4, 8, 9, 10] 
    nums1 + nums2 #[1, 3, 5, 6, 4, 8, 9, 10] 
    1 is in nums1 # True 
    nums1.extend([7,6,45]) # 리스트에 새로운 리스트 추가 
    nums1.append(4) # 리스트에 4추가 
    nums1.insert(3, 9) # 3번째 주소에 9추가 
    nums1.remove(9) # 9삭제 
    del nums1[0] # 0번째 리스트 삭제

    파이썬의 list는 같은 자료형만 들어갈 필요가 없고 중첩이 가능하다. 이는 파이썬이 메모리의 주소를 계속해서 참조하고 있기 떄문이다.

  • 메모리 저장 방식

    assign연산을 수행하면 두 변수가 같은 메모리를 참조하게 된다.

    a = [1, 2, 3] 
    b = [4, 5, 6]
    # 현재 a와 b는 서로 다른 메모리를 가리키고 있음 
    a = b # a와 b가 같은 메모리를 가리킴 
    b = [6, 8, 9] # b에 재 할당이 일어나 a와 다른 메모리를 가리키고 있음 
    #deepcopy를 수행하려면 
    b = a[:] #처럼 값을 복사하면된다. 혹은 copy.deepcopy를 사용하면 된다. 
    #이런식의 복사는 1차원 list에서만 가능하다.

문자열 함수

  • len(a) : 문자열의 문자 개수를 반환

  • a.upper() : 대문자로 변환

  • a.lower() : 소문자로 변환

  • a.capitalize() : 첫 문자를 대문자로 변환

  • a.titile() : 제목형태로 변환 띄워쓰기 후 첫 글자만 대문자

  • a.count('abc') : 문자열 a에 'abc'가 들어간 횟수 반환

  • a.find('abc') : 문자열 a에 'abc'가 들어간 위치 반환 (앞에서 부터 처음으로 찾은 지점)

  • a.rfind('abc') : 문자열 a에 'abc'가 들어간 위치 반환 (뒤에서부터 처음으로 찾은 지점)

  • a.startswith('abc') : 문자열 a가 'abc'로 시작하는지 True False반환 (a.startswith('abc', 5) : a의 5번인덱스부터 abc로 시작하는지 T F반환)

  • a.endswith('abc') : 문자열 a가 'abc'로 끝나는지 True False반환 (a.endswitch('abc',5,9) : a의 5번인덱수부터 9번인덱스 전까지가 abc로 끝나는지 T F반환)

  • a.strip() : 좌우 공백 제거

  • a.rstrip() : 오른쪽 공백 제거

  • a.lstrip() : 왼쪽 공백 제거

  • a.split() : 공백을 기준으로 리스트로 변환 split에 인자로 구분자를 줄 수 있다.
    a.split(':')와 같이 공백이 아닌 ':'를 기준으로 리스트를 만들 수 있는데 이때 list에 빈 문자열이 같이 들어가게된다.
    빈 문자열을 제거해주기위해

    a_list = a.split()
    a_list = " ".join(a_list).split()

    와 같이 공백을 구분자 삼아 리스트를 문자열로 바꾸어준 뒤 다시 공백 기준으로 split해주면된다.

패킹과 언패킹

  • 패킹 : 한 변수에 여러 개의 데이터를 넣는 것

  • 언패킹 : 한 변수의 데이터를 각각의 변수로 반환

    t = [1, 2, 3] # 1,2,3을 변수 t에 패킹 
    a, b, c = t # t에 있는 값 1, 2 3을 변수 a,b,c에 언패킹

IO

  • input()함수를 사용해 입력을 받을 수 있음 입력받은 type는 항상 string타입이다.

  • input("message")처럼 사용해

  • print("abc", 3) 처럼 사용해 사이에 공백이 추가되어 출력된다.

print formatting

print("%s %s" %('one', 'two')) 
print("{} {}".format('one','two)) 
print("%d %d" %(1,2)) 
print("{} {}".format(1,2)) 

# "%datatype"%(variable) 
# "~~~{datatype}~~~".format(variable) 

print("{0: <10s}, {1:>10.3f}".format('abc',3.333)) 

#최근 방법 PEP498에 근거한 formatting기법(f-string) 

name = "abc" 
age = 33 

print(f"Hello, {name}. You are {age}.") 
print(f'{name:20}') 
print(f'{name:>20}') 
print(f'{name:*<20}') 
print(f'{name:*>20}') 
print(f'{name:*^20}')

조건

  • is와 ==의 차이

    a = 100 
    b = 100 
    a == b # True 
    a is b # True 
    
    a = 300 
    b = 300 
    a == b # True 
    a is b # False

    is는 주소를 비교하고 ==은 값을 비교한다. 값이 100일 경우 두개의 주소가 같은 것을 확인할 수 있는데 이는 파이썬이 -5 ~ 256이라는 자주 사용하는 숫자를 미리 정적 메모리에 올려놓기 때문이다.

  • all,any

    boolean_list = [True, False, True, False] 
    all(boolean_list) # list전체를 and연산 한것과 같음 
    any(boolean_list) # list전체를 or연산 한것과 같음
  • 삼항 연산자

    value = 123 
    is_even = True if value % 2 == 0 else False # 참일경우 앞 아닐 경우 뒤

if __name__ == "__main__"

def main(): 
    .... 

if __name__ == "__main__"
    main()

py파일을 파이썬으로 바로 실행시키면 __name__에 __main__이 들어가게된다. 프로그램의 entry point이기 때문이다. (import된경우 파일 이름이 들어가게됨). 이런식으로 메인함수를 따로 작성해줘야 import에 상관없이 원하는 동작을 사용할 수있다. 위 if문은 현재 스크립트가 Entry point일때만 (파이썬 인터프리터로 현재파일을 실행시킨 경우)main함수가 동작한다. import로 이 파일을 추가해도 main은 실행되지 않는다.

raw string

s = r"abc\nasd" #앞에 r을 붙히면 raw string으로 인식되어 출력할경우 \n이 문자로 출력됨

파이썬의 함수 호출

  • call by object reference
    파이썬은 객체의 주소가 함수로 전달되는 방식을 사용한다.
    전달된 객체를 참조하여 변경 시 호출자에게 영향을 주지만 새로운 객체를 만들경우 영향을 주지 않는다.

function type hints

def function(var_name : var_type) -> return_type:
    ... 

def my_f(name : str) -> str: 
    ..

함수를 처음 사용하는 사람이 parameter와 리턴 타입을 알 수 없어 힘들다.
이를 해결하기위해 파이썬 3.5부터 타입 힌트를 작성하여 사용자가 쉽게 함수를 사용할 수 있도록 하였다.

function docstring

파이썬 함수에 대한 상세스펙을 사전에 작성하여 사용자 이해도를 높일 수 있다.

함수명 바로 아래에 세개의 따옴표를 사용해 docstring영역을 표시한다.

코딩 컨벤션

  • conda install flake

    flake8 asd.py 를 사용해 코딩 PEP8에서 정의된 코딩컨벤션이 맞는지 알려준다.

  • conda install black

    black asd.py 를 사용해 PEP8에 최대한 맞춰서 자동으로 수정이된다.

'Programming Language > Python' 카테고리의 다른 글

Python  (0) 2021.01.19
Comments