[python] 파이썬 명령어 모음/ 총정리
문자열
- a ** b 제곱
- a // b 나눗셈(.이하 버림)
- """ & ''' 문자열 여러문장 출력
- 문자열변수*숫자 숫자번 문자열을 반복시킨후 출력
- 문자열+문자열 문자열을 합해서 출력
- a[2:] 문자열슬라이싱(a라는 문자열의 3번째이후로 쭉)
- x = ","
x.join("abcd") 'a,b,c,d' - 포맷코드 %
ex) "I have %d egg" %3 -> "I have 3 egg"
ex) %s %문자열 - %% : %출력하고 싶을때
- 공백제거
양쪽 공백 지우기 : a.strip();
왼쪽 공백 제거 : a.lstrip();
오른쪽 공백 제거 :a.rstrip();
- split(":") : ' '괄호 안의 조건을 기준으로 문자열 쪼개기
- 그 외 count find index
print 문
print("apple","banana","candy") apple banana candy
print("apple""banana""candy") applebananacandy
print("apple"+"banana"+"candy") applebananacandy - a = [1, 2, 3, ['a', 'b', 'c']]
print (a[-1][0] a)
문자+str(숫자) 문자+숫자 출력 - 소문자를 대문자, 대문자를 소문자(.upper() / .lower() )
a = "hiBYE"
a.upper()
'HIBYE'
a = "HIbye"
a.lower()
'hibye'
소수점 자리수 조절(f string)
-- 문자열 포맷 코드
%s | 문자열(String) |
%c | 문자 1개(character) |
%d | 정수(Integer) |
%f | 부동소수(floating-point) |
%o | 8진수 |
%x | 16진수 |
%% | Literal % (문자 % 자체) |
- f string 소수점 자릿수 정렬법 (f'{변수이름:.[소수점자릿수]f}'
왼쪽 정렬 | 가운데 정렬(변수:^칸수포맷코드) | 오른쪽 정렬(기본 값) (표기 :>안해도됨) |
{x:<10s} (단어 10칸공백) | {x:^10d} (양옆 총 10칸) | {x:10.3f} (10칸오른쪽, 소수점 3자리) |
a = 3.141592
print(f'에이는 {a:.3f} 이다.')
>> 에이는 3.142 이다.
(소수점 4번째 5에서 반올림 되어서 3.141이 아닌 3.142 이다.)
print(f'에이는 {a:.5f} 이다.')
>> 에이는 3.14159 이다.
a = 3.141592
for i in range(3):
print(f'{i}번째 자리까지 표현 {a:.{i}f}')
0번째 자리까지 표현 3
1번째 자리까지 표현 3.1
2번째 자리까지 표현 3.14
왼쪽/오른쪽/가운데 정렬
왼쪽 정렬 | 가운데 정렬(변수:^칸수포맷코드) | 오른쪽 정렬(기본 값) (표기 :>안해도됨) |
{x:<10s} (단어 10칸공백) | {x:^10d} (양옆 총 10칸) | {x:10.3f} (10칸오른쪽, 소수점 3자리) |
- 2. %정렬법 ( 그냥 f string 을 사용하자,,,,)
1) 문자 왼쪽 공백 10개 %10s
print("%10s" % "hi")
' hi'
2) 문자 오른쪽 공백 10개 %-10s
"%-10sjhon." % 'hi'
'hi jhon.'
3) 소수점 자리수 조절
"%10.4f" % 3.42134234
' 3.4213'
리스트
리스트변경
a = [1, 2, 3]
a[1:2] = ['a', 'b', 'c'] = [1, 'a', 'b', 'c', 3]
a[1] = ['a', 'b', 'c'] = [1, ['a','b','c'], 'b', 'c', 3]
del a[2] = [1, ['a','b','c'], 'c', 3]
a.apend(4) 추가([1, ['a','b','c'], 'c', 3, 4]
a.sort() 정렬([1, 3, 4, ['a', 'b', 'c'], 'b'])
a.reverse 역순으로 뒤집음
a.insert(0,4) 1번째 위치에 4를 넣음(리스트는 0부터시작)
a.remove(3) 4번째 요소를 지움
a.pop() 마지막요소 출력 후 리스트에서 삭제
a.extend([4,5]) a에 [4,5]라는 리스트를 추가
리스트 정렬법 모음 key 사용(sort, sorted)
a = [(1, 2), (5, 1), (0, 1), (5, 2), (3, 0)]
▷ key 인자를 정하지 않은 기본적인 sort에선, 튜플 순서대로 우선순위 기본 할당
b = sorted(a)
b = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
▷ key 인자에 함수를 넘겨주면 우선순위가 정해짐.
c = sorted(a, key = lambda x : x[0]) <- 인덱스 [0] 기준으로
c = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
d = sorted(a, key = lambda x : x[1]) <- 인덱스 [1] 기준으로
d = [(3, 0), (5, 1), (0, 1), (1, 2), (5, 2)]
▷ 비교할 아이템이 요소가 복수 개일 경우, 튜플로 우선순위를 정해줄 수 있다.
-를 붙이면, 현재와 반대차순으로 정렬된다.
e = sorted(a, key = lambda x : (x[0], -x[1])) <- [0] 기준으로 하되 같은 수는 [1]기준 역순정렬
e = [(0, 1), (1, 2), (3, 0), (5, 2), (5, 1)]
f = sorted(a, key = lambda x : -x[0]) <- [0]기준 역순정렬
f = [(5, 1), (5, 2), (3, 0), (1, 2), (0, 1)]
s = ['2 A', '1 B', '4 C', '1 A']
sorted(s) ['1 A', '1 B', '2 A', '4 C']
▷ 뒤에 문자 순 정렬
s = ['2 A', '1 B', '4 C', '1 A', '3 A']
s.sort(key=lambda x: (x.split()[1])) -> 문자순 정렬 , 숫자 상관없이 index 빠른 순으로 정렬된다.
['2 A', '1 A', '3 A', '1 B', '4 C']
s.sort(key=lambda x: (x.split()[1], x.split()[0])) -> 문자순 정렬, 숫자도 순서대로
['1 A', '2 A', '3 A', '1 B', '4 C']
s.sort(key=lambda x: (x.split()[1], -int(x.split()[0]))) -> 문자순 정렬, 숫자는 역순
['3 A', '2 A', '1 A', '1 B', '4 C']
▷ 리스트에서 특정 값의 위치(index) 찾기
- 해당 값이 존재하는 가장 작은 인덱스
a_list = [1, 3, 4, 3, 6, 7]
a_list.index(3)
=> 1
- filter 이용 : 모든 인덱스 반환
a_list = [1, 3, 4, 3, 6, 7]
result_list = list(filter(lambda x: a_list[x] == 3, range(len(a_list))))
print(result_list)
=> [1, 3] # 인덱스
Python array[::] 용법
arr[::], arr[1:2:3], arr[::-1] 배열의 index에 접근하는 방법
설명
list_new = arr[A:B:C]의 의미는, index A 부터 index B 까지 C의 간격으로 배열을 만들어라는 말입니다.
예시)
arr = range(10)
>> [0,1,2,3,4,5,6,7,8,9]
arr[::2] # 처음부터 끝까지 두 칸 간격으로
>> [0,2,4,6,8]
arr[1::2] # index 1 부터 끝까지 두 칸 간격으로
>> [1,3,5,7,9]
arr[::-1] # 처음부터 끝까지 -1칸 간격으로 ( == 역순으로)
>> [9,8,7,6,5,4,3,2,1,0]
arr[::-2] # 처음부터 끝까지 -2칸 간격으로 ( == 역순, 두 칸 간격으로)
>> [9,7,5,3,1]
arr[3::-1] # index 3 부터 끝까지 -1칸 간격으로 ( == 역순으로)
>> [3,2,1,0]
arr[1:6:2] # index 1 부터 index 6 까지 두 칸 간격으로
>> [1,3,5]
튜플
(리스트와 차이 : 값을 변경, 삭제 불가, 추가만 가능)
t1 = () 빈 튜플 생성
t2 = (1,) 튜플 하나만 생성 시
t3 = (1, 2, 3) 튜플여러값 넣고 생성
t4 = 1, 2, 3 튜플은 () 빼고 생성해도 무방
t5 = ('a', 'b', ('ab', 'cd'))
딕셔너리(key , value)
a = {1:'a'}
a.keys() a딕셔너리 key값 출력
a.values() a딕셔너리의 value값만 출력
a.get(key) key에 대응하는 value값 출력
a.get(key, default) a에 key라는 값이 없으면
default값을 출력
key in a a에 key가 있으면 True 없으면 False
key not in a a에 key가 없으면 True 있으면 False
집합(set(1, 2 ,3)) #중복 허용 x, 순서 x
-> update, remove, add, difference(차집합), intersection(교집합), union(합집합)
a is b 값 같은지 확인(a is b)
a, b = b, a 값 교체
a = b = 3 a와 b에 3이라는 값을 넣음
a = b 리스트 복사
(하지만 a값 변경하면 b값도 변경됨)
b = a [:] 값만 복사(이후로는 상관 x)
(== for copy import copy 후 b = copy(a))
조건문
a in ['a', 'b' , 'c'] a가 []안에 있니?
a not in ['a', 'b' ,'c'] 없니?
if / else
elif else if와 같은 뜻
pass 아무것도 안 하고 넘어간다
반복문
ctrl+c 빠져나갈 수 있음
for i in range(len(a)) a의 길이만큼 반복
for i in range(1, 11) 1,2,3... 10까지
for i in range(10, 1 , -2) 10,-8,-6... 2 (-2 만큼 증감)
sum += i 1~10까지 더한 값
continue 반복문 맨 위로 돌아감
break 반복문 끝내기
함수
def function(*args) -> 입력값이 몇 개가 될지 모를 경우
=>실행내용
return값을 2개로 설정시 튜플값(값1, 값2)로 출력
global a 글로벌 변수 a
for i in range(2,10): #구구단
for j in range(1, 10):
print i_j, -> i_j i_j i_j ... (띄어쓰기 표시 = ,) -> 2.7 버전
print('') ==> 콤마로 \n제거
파일 열기
f = open("file.txt", "mode") file.txt파일을 mode방식으로 연다
mode = r / w / a r = 읽기모드, w = 쓰기모드,
a = 추가모드(마지막에 새로운 내용 추가)
f.close() 파일 닫기
f.write(data) data를 파일에 쓰기
line = f.readline() 한줄씩 읽기
if not line: break 더 읽을 라인 없을때 종료
lines = f.readlines() 모든 라인 읽음
with open("foo.txt", "w") as f: 파일 원하는 목적으로 연 후 끝나면 자동으로 닫아줌
import sys
args = sys.argv[1:]
for i in args:
print(i) 입력받은 argv들을 출력
클래스
구조
class 클래스이름[(상속 클래스명)]:
<클래스 변수 1>
<클래스 변수 2>
...
def 클래스함수1(self[, 인수1, 인수2,,,]):
<수행할 문장 1>
<수행할 문장 2>
...
def 클래스함수2(self[, 인수1, 인수2,,,]):
<수행할 문장1>
<수행할 문장2>
...
...
self.변수 자신의 클래스 내부의 변수
def init() : 초기화함수
모듈
#mod1.py #저장할 파일명
def sum(a,b):
if type(a) != type(b): #타입형이 다르면 에러문 만들고 끝내도록
print("더할수 있는 것이 아닙니다.")
return
else:
result = sum(a,b)
return result
----------------- 다른파일
import mod1
print(mod1.sum(3,4))
7
에러/예외처리
raise NotImplementedError #NotImplementedError를 발생시킨다.
try:
...
except [발생 오류[as 오류 메시지 변수]]:
...(ex) pass) #예외발생하더라도 그냥 넘기고 싶을때 pass를 씀
else: #예외가 발생하지 않은 경우에 실행됨
(반드시 except절 뒤에 위치)
...
finally: #반드시 실행시켜야 할 것이 있을 경우
f.close()
에러 해결방식 설정
try:
4 / 0
except ZeroDivisionError, e:
print e
import sys
def convert(s):
"""int로 변환"""
try:
a = int(s)
print('성공')
except (ValueError, TypeError) as e:
print('에러정보 : ', e, file=sys.stderr)
a = -1
return a
convert(123) => 성공
convert('asd') => 에러정보 : TypeError
-1
내장함수
abs(x) #x의 절대값 출력
all([x,y,z]) #x, y, z모두 참이면 true 아니면 false
any([x,y,z]) #x,y,z 중 하나라도 참이면 true 아니면 false
chr(97) -> 'a' #ascii코드값중 97값을 'a'값으로 이용
ord('a') -> 97 #ascii코드값중 'a'값을 97값으로 이용
dir([1,2,3]) #dir 객체가 자체적으로 가지고 있는 변수나 함수를 보여줌
positive([1,-3,2,0,-5,6]) #1,2,6(양수 값 출력)
filter(positive, [x, y, z]) #x,y,z중 양수값인 것만 따로 거른다.
hex(x)/oct(x) #x를 16진수 형태로 출력해줌 / x를 8진수로
x = input('값을 입력하시오') #x값을 사용자로부터 입력받아서 저장
len(s) #s의 길이(문자의 갯수) 출력
list(s) #반복 가능한 자료형 s를 입력받아
리스트로 만들어 리턴
max(list), min(list) #최대 최소값 추출
open(filename, [mode]) #파일열기(mode-- "w" = 쓰기모드,"r" = 읽기모드,
"a" = 추가모드,"b" = 바이너리모드)
pow(x, y) #x를 y제곱한 결과
list(range(5)) #[0, 1, 2, 3, 4]
list(range(5,10)) #[5, 6, 7, 8, 9]
list(range(1, 10, 2)) #[1, 3, 5, 7, 9]
sorted(iterable) #오름차순정렬
str() #문자열형태로
(.upper()등으로 대/소문자 변환도 가능)
type(object) #해당 객체의 type을 알려줌 (str, int, float,...)
외장함수
sys
.exit() #강제 스크립트 종료
.path #모듈이 저장된 위치
.path.append("~") #경로명 추가
os.chdir("C:\WINDOWS") #디렉터리 위치변경
os.getcwd() #디렉터리 위치받기
os.system("dir") #시스템 명령어 호출
os.popen("dir") #시스템 명령어 실행시킨 결과값을 읽기 모드 형태의 파일객체로 리턴
os.mkdir(directory) #디렉터리 만들기
os.rmdir(directory) #디렉터리 삭제
os.unlink(file) #파일삭제
os.rename(src, dst) #이름변경(src->dst)
그외 time, calender, random, webbrowser 등의 명령어들이 있다.(import후 내부 함수이용)
.txt 열기/쓰기/추가
with open('test1.txt','r') as f: #test1 파일을 읽고 f로 부른다.
with open('test1.txt','w') as f: #test1 파일에 내용을 작성한다.(덮어쓰기로 안에 내용이 바뀜)
with open('test1.txt','a') as f: #test1 파일에 내용을 추가한다.
.txt 파일이 ◇◇ 같이 읽힌다면
with open('test1.txt','r', encoding = 'utf-8') 값을 주십쇼!
예시)
# 수정하기/작성하기 'a' 옵션
with open('test1.txt','a') as f:
f.write('first second\n')
f.write('face hand\n')
>> 수정하기 옵션'a'는 파일이 없으면 만든다
>> first scond
face hand
# 읽어오기 옵션 'r'
with open('test1.txt','r') as f:
for i in f:
print(i)
>> 내용을 한 줄씩 출력한다.
alist = []
for i in f:
x = i.split() # 공백으로 나눈 리스트 x = ['first','second']
alist.append(x[1])
print(alist)
>> 각 줄의 두 번째 항목들만 리스트로 모아서 출력
내용출처(https://wikidocs.net/book/1)