일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- list
- 42서울
- C++
- docker
- C언어
- iF
- cout
- else if
- 42
- vs코드 단축키
- phpmyadmin
- 자료형
- 동적할당
- 구조체
- for
- Double
- jupyter 단축키
- Class
- ft_server
- nginx
- 42Seoul
- 포인터
- 42cursus
- While
- float
- 2차원배열
- 패킹
- libft
- 함수
- python
- Today
- Total
Developer
Python(문자열 함수, IO, 함수) 본문
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영역을 표시한다.
코딩 컨벤션
'Programming Language > Python' 카테고리의 다른 글
Python (0) | 2021.01.19 |
---|