Python 문법 개인적 공부

LeeKyoungChang·2021년 11월 1일
1
post-thumbnail

개인 정리

1. 입력할 때

a, b =input().split() : 공백을 기준으로 입력된 값들을 나누어 자른다.

n = ord(input()) : 입력받은 문자를 10진수 유니코드 값으로 변환한 후, n에 저장한다.

  • ord() : 어떤 문자의 순서 위치 값을 의미한다.
  • ord(c) : 문자 c를 10진수로 변환한 값
  • chr() : 정수값 -> 문자
  • ord() : 문자 -> 정수값

a = bool(int(input())) : 한 단계씩 계산/처리/평가

xor

    a, b = input().split()
    c = bool(int(a))
    d = bool(int(b))
    print((c and (not d)) or ((not c) and d))

숫자인지 판단할 때

    변수.isdigit()

16 진수 입력 하기

n = int(input(), 16)

 

n = int(input()) : 개수를 입력받아 n에 정수를 저장

a = input().split() : 공백을 기준으로 잘라 a에 순서대로 저장

 

map을 사용하여 정수로 변환하기 (실수일 때는 float)

a, b = map(int, input('숫자 두 개를 입력하세요: ').split())

map을 사용하여 입력받은 값을 콤마를 기준으로 분리하기

a, b = map(int, input('숫자 두 개를 입력하세요: ').split(',')) # 입력받은 값을 콤마를 기준으로 분리

map을 사용하여 입력받은 값을 list로 저장하기

list_array = list(map(int,input().split()))

## 2차원 배열, list에 저장
array = [[0] * 20 for i in range(20)]

for i in range(1,20):
    array[i] = list(map(int,input().split()))

2차원 배열 입력받기

  • array = [[0 for col in range(11)] for row in range(10)]
    • 열, 행 순으로 이중 for문 (행 : 10, 열 : 11)
  • array = [[0]*11 for i in range(10)]
  • 2차원 배열 [1][1] ~ [20][20] 까지 입력받기

    • list_data = [[0] * 20 for i in range(20)]for i in range(1,20):    list_data[i][1:20] = list(map(int,input().split()))
  • 00010와 같은 배열 입력받은 후 2차원 배열에 숫자로 저장하기

    • n, m = map(int,input().split())graph = []for i in range(n):    graph.append(list(map(int, input())))print(graph)
  • 2차원 배열을 사용할 때, 행의 길이는 지정, 열의 길이는 입력할 때마다 늘리기

    • n, m, k, x = map(int,input().split())graph = [[] for _ in range(n+1)]for i in range(m):    a, b = map(int, input().split())    graph[a].append(b)  # a번째 행의 열의 길이 늘어남
  • 2차원 배열문자열 입력받기

    • n = int(input())list_arr = []for i in range(n):    list_arr.append(list(input().split()))print(list_arr)

 

 

2. 문자열, 문자

똑같은 문자 여러 번 출력하기

w, n = input().split()print(w*int(n))

 

in, not in

# 1. 문자열if 'p' in 'python':    print(True)else:    print(False)-------------------------Trueif 'k' not in 'python':    print(True)else:    print(False)-------------------------True# 2. List############## in ##############if 'a' in ['a','b','c']:    print(True)else:    print(False)--------------------------------True############## not in ##############if 'd' not in ['a','b','c']:    print(True)else:    print(False)-------------------------------- True# 3. Tuple############# in #############if 'a' in ('a','b','c'):	print(True)else:	print(False)-------------------------True############# not in #############if 'd' not in ('a','b','c'):	print(True)else:	print(False)-------------------------True# 4. 딕셔너리########### in ###########if 'a' in {'a':1,'b':2}:	print(True)else:	print(False)---------------------------True########### not in ###########if 'c' not in {'a':1,'b':2}:	print(True)else:	print(False)---------------------------False

 

ord, str

ord : 영문자 1개를 숫자로 변환하기

str : 숫자를 영문자 1개로 변환하기

 

알파벳인지 확인하기

문자열.isalpha()

 

문자열 합치기

문자열 += "".join(문자열)

문자열 나누기

str = "Hi my name is limcoing"splitted_str = str.split()

 

문자열에서 만난 오류

TypeError: 'str' object does not support item assignment

파이썬에서 문자열 수정이 불가능하다.

S = 'hi hello'S[0] = 'p'# 결과# TypeError: 'str' object does not support item assignment

문자열은 수정이 불가능한 자료구조이며, 튜플 또한 해당된다.

수정이 불가능한 자료구조를 immutable type이라고 한다.

수정이 불가능한 자료구조를 수정하려면 type을 변경해야한다.

1) 리스트로 변환하여 수정

S = 'hi hello'S = list(S)S[0] = 'p'

 

 

3. 계산

  • 정수 몫을 구할 때는 : //
  • 소수 점 몫을 구할 때는 : /
  • 나머지 : %
  • 소수점 계산하기
    • print(format(a,".2f"))

 

4. 거듭제곱

  • 2 << 10 : 2^10 = 1024

 

5. 비트단위

  • 비트 단위 not 하여 출력하기

  • 비트 단위로 1 -> 0, 0 -> 1로 바꾼 후 그 값을 10진수로 출력

    • ~ : tilde, 틸드

    • & : ampersand(and), 비트단위 연산자

    • ~n = -n - 1-n = ~n + 1n = input()print(~int(n))print(3&5)
  • 비트 단위 연산자

    • ~(bitwise not), &(bitwise and), |(bitwise or), ^(bitwise xor), <<(bitwise left shift), >>(bitwise right shift)
  • xor : ^

  • or : |

 

6. 값 비교

1) 한 줄로 두 변수 중 큰 값 반환

c = (a if (a>=b) else b)

2) 가장 작은 값

min(a,b,c)

3) 짝수만 출력하기

None : 빈 값, null

def odd(n):    if n % 2 == 0:        return na, b, c = input().split()a = int(a)b = int(b)c = int(c)if odd(a) != None: print(a)if odd(b) != None: print(b)if odd(c) != None: print(c)

 

7. 반복문

1) range

  • range(끝)
  • range(시작, 끝)
  • range(시작, 끝, 증감)

2) sep=''

  • 공백없이 모두 붙여 출력된다.

3) 이차원 배열 list 만들기

  • d = []  # 대괄호 []를 이용해 아무것도 없는 빈 리스트 만들기for i in range(20):    d.append([])  # 리스트 안에 다른 리스트 추가해 넣기    for j in range(20):        d[i].append(0)   # 리스트 안에 들어있는 리스트 안에 0 추가해 넣기n = int(input())for i in range(n):    x, y = input().split()    d[int(x)][int(y)] = 1for i in range(1, 20):    for j in range(1, 20):        print(d[i][j], end=' ') # 공백을 두고 한 줄로 출력    print()
array = [[0] * 11 for i in range(10)]

 

 

 

8. List

한 줄에 여러 숫자가 입력되어 있을 때, List에 저장하기

n = int(input())list_data = []list_data = input().split()print(list_data[0])# 입력받은 수 정렬하기list_data.sort()

list 길이 알고 싶을 때, len(list)

 

 

9. List Comprehension

여러 개 입력 받고 한 번에 list 형식 int형으로 변형하기

list_array = [int(x) for x in input('정수를 여러개 입력하세요 : ').split()]print(list_array)

 

 

10. 2차원 리스트를 다룰 때 사용되는 rotate_a_martix_by_90_degree()메소드

def rotate_a_matrix_by_90_degree(a):    n = len(a) # 행 길이 계산    m = len(a[0])  #열 길이 계산    result = [[0]*n for _ in range(m)] # 결과 리스트    for i in range(n):        for j in range(m):            result[j][n-i-1] = a[i][j]    return result

 

 

11. Immutable, mutable, 전역변수, 지역변수

mutable : 변경 가능 (객체의 상태를 변경할 수 있음)

  • list, set, dictionary

Immutable : 변경되지 않는 객체 (객체의 상태를 변경할 수 없음)

  • int, float, tuple, str, bool 등

 

mutable

def updateList(list1):    list1 += [10]n = [5, 6]print(id(n)) # 140312184155336updateList(n)print(n) # [5, 6, 10]print(id(n)) # 140312184155336	

Immutable

def updateList(n):    print(id(n))    n += 10b = 5print(id(b))			# 10055680updateNumber(b)			# 10055680print(b)				# 5

mutable : call by reference를 주로 사용

immutable : pass by value를 주로 사용

 

전역변수

함수 밖의 전역 공간에서 선언된 변수

함수 안에서 참조가 가능하지만 변경은 하지 못한다.

a = 5def sum():    print(a)    sum()a = 5def sum():    a = 10    print(a)    sum()print(a)# 결과# 10# 5

지역변수

함수의 안에서 생성되는 변수

해당 지역을 벗어날 때 메모리에서 제거되므로 외부에서 참조를 할 수 없는 변수이다.

def test():    a = 10print(a) # NameError : name is not defined

global

함수안에서도 전역변수의 값을 수정할 수 있도록 해준다.

a = 10def sum():    global a    a = 5sum()print(a)# 결과# 5

함수 안에서 전역변수를 생성할 수도 있다.

def sum():    global a    a = 5sum()print(a)# 결과# 5

 

 

12. deque

일차원 배열 선언할 때

q = deque([1])print(q.popleft()) # 1

 

 


참고 자료

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글

관련 채용 정보