python

[python] 파이썬 명령어 모음/ 총정리

고로케 2021. 4. 19.
반응형

문자열

  • 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)

 

 

반응형

댓글