본문 바로가기
개발자 일지/Phython

[인프런]파이썬 알고리즘 기초 문법 정리2

by 네빌링 2021. 4. 18.
반응형

-파이썬의 기초적인 문법과 새로 알게된 문법 등을 정리한다.

-인프런의 김태원님 파이썬 강의를 학습한 내용을 간단하게 정리한다.


문자열과 내장함수

 파이썬은 문자열과 관련한 여러가지 내장함수가 있다. 문자를 대문자료 표현, 소문자로 표현, 문자 안의 특정 값 찾기, 문자 길이 찾기 등 여러가지 함수가 있으니 기본적인 건 다 익혀둬야 할 것 같다.

msg="It is Time"
print(msg.upper()) #IT IS TIME
print(msg.lower()) #it is time

tmp=msg.upper()
print(tmp.find('T')) #1 (T라는 문자 찾아 인덱스 번호 반환)
print(tmp.count('T') #2 (T라는 문자 개수 반환)
print(msg[:2]) #It (처음부터 인덱스2 바로 전(인덱스1)까지)
print(msg[3:5]) #is (인덱스 3부터 인덱스4까지)
print(len(msg)) #10 (공백 포함 문자 길이)

for i in range(len(msg)):
    print(msg[i], end=' ') #I t  i s  T i m e
    
print()

#위와 같은 결과(문자 자체로 for문 돌기 가능)
for x in msg:
    print(x,end= ' ') #I t  i s  T i m e
    
print()

#isupper() : 문자가 대문자인 경우 True 반환
for x in msg:
    if x.isupper():
        print(x,end=' ') #I T
        
print()

#islower() : 문자가 소문자인 경우 True 반환
for x in msg:
    if x.islower():
        print(x,end=' ') #I T
        
print()

#isalpha() : 문자가 알파벳인 경우 True 반환
for x in msg:
    if x.isalpha():
        print(x, end='')

print()

#ord() : 문자를 아스키 넘버로 출력
tmp='AZ'
for x in tmp:
    print(ord(x), end=' ') #65 90

tmp='az'
for x in tmp:
    print(ord(x), end=' ') #97 122

print()

#chr():아스키넘버를 문자로 출력
tmp=66
print(chr(tmp)) #B

리스트와 내장함수1

 파이썬에서는 가장 기본적인 리스트 자료구조가 있다. 다른 언어에서는 배열(array)가 있는데 파이썬은 리스트(list)로 대체한다. 대괄호([])를 사용하여 표현하며 리스트와 관련한 여러 내장함수들이 있다.  

 그리고 파이썬에서는 하나 이상의 문자열을 가지고 있는 묶음을 자료구조 이외에 컨테이너라고도 표현한다. 리스트,튜플 등의 컨테이너가 있다. 리스트 설명 후 튜플(tuple)이라는 컨테이너도 작성했으니 참고하면 될 것 같다.

import random as r #random 모듈을 가져와서 r이란 문자로 사용

a=[] #빈 리스트 만들기(방법1)
b=list() #빈 리스트 만들기 방법(2)

a=[1,2,3,4,5] 
print(a) #[1,2,3,4,5]

print()

print(a[0]) #1(a의 0번 인덱스 값 출력)

print()

b=list(random(1,11)) 
print(b) #[1,2,3,4,5,6,7,8,9,10] (1부터 10까지 리스트 초기화)

print()

c=a+b
print(c) #[1,2,3,4,5,1,2,3,4,5,6,7,8,9,10] (리스트끼리 합쳐짐)

#append(): 뒤에 값 추가
a.append(6)
print(a) #[1,2,3,4,5,6]

#insert():특정 인덱스 위치에 값 추가
a.insert(3,7)
print(a) #[1,2,3,7,4,5,6]

#pop():맨 뒤에 값 하나 뺌
a.pop()
print(a) #[1,2,3,7,4,5]

#pop(index번호):index번호의 값 뺌
a.pop(3)
print(a) #[1,2,3,4,5]

#remove(value):특정 값 지움
a.remove(4)
print(a) #[1,2,3,5]

#index(value):값의 인덱스 번호 출력
print(a.index(5)) #3

#sum(리스트) : 리스트 안의 값들 다 합치기
a=list(range(1,11))
print(sum(a)) #55

#max:최대값
print(max(a)) #10
#min:최소
print(min(a)) #1

#min(a,b,...):a,b,c...중 최소 값 출력
print(min(7,3,5)) #3

#shuffle:섞기
r.shuffle(a)
print(a) #[4,2,6...]

#sort:오름차순 정렬
a.sort()
print(a) #[1,2,3..]

#sort(reverse:True):내림차순 정렬
a.sort(reverse=True)
print(a) #[10,9..]

#clear:리스트 empty 초기화
a.clear()
print(a) #[]

 

리스트와 내장함수2, 튜플 등

 파이썬에는 리스트와 함께 튜플(tuple)이라는 자료구조가 있다. 리스트와 튜플은 자료를 순차적으로 저장한다는 공통점이 있는데 차이점은 튜플의 경우 데이터를 한 번 저장하면 수정할 수 없다는 것이다. 또한 튜플의 경우 리스트보다 메모리를 덜 사용한다는 장점이 있다.

a=[23,12,36,53,19]
print(a[:3]) #[23,12,36]
print(a[1:4]) #[12,36,53]
print(len(a)) #5 (리스트 길이 구하기)

#값 접근 방법1
for i in range(len(a)):
    print(a[i], end=' ') #23 12 36 53 19

#값 접근 방법2
for x in a:
    print(x, end=' ') #23 12 36 53 19

print()

#튜플 형태 접근
for x in enumerate(a):
    print(x) #(0,23)(1,12)
    
#소괄호는 튜플 자료구조
b=(1,2,3,4,5)
print(b[0])

#리스트와의 차이점 : 튜플은 데이터 변경이 불가능하다

#튜플 키와 벨류 뽑기
for x in enumerate(a):
    print(x[0], x[1]) #0 23 / 1 12..

print()

#튜플 다른 접근방법
for index,value in enumerate(a):
    print(index,value) #0 23 / 1 12...
    
print()

#all : 모두 참이어야 true
if all(60>x for x in a):
    print("YES")
else
    print("NO")
    
#any : 한번이라도 참이면 true
if any(15>x for x in a):
    print("YES")
else:
    print("NO")

 

2차원 리스트 생성과 접근

 리스트를 2차원 리스트 형태로 만들 수 있다. 수학의 행렬을 생각하면서 사용하면 된다.

a=[0]*3 
print(a) #[0,0,0]

#2차원 리스트 생성
#for의 언더바(_)는 변수없이 반복
#2차원 리스트는 행,열로 접근. a[0][1]=1은 0행1열에 1을 대입한다는 의미
a[[0]*3 for _ in range(3)]
print(a) #[[0,0,0],[0,0,0],[0,0,0]]

a[0][1]=1
a[1][1]=2
print(a) #[[0,1,0],[0,2,0],[0,0,0]]

#행렬표처럼 출력
#[0,1,0]
#[0,2,0]
#[0,0,0]
for x in a:
    print(x)
    
#2차원행렬 원소 하나하나 접근
#0 1 0
#0 2 0
#0 0 0 
for x in a:
    for y in x:
        print(y, end=' ')
    print()

함수만들기

 파이썬도 다른 언어들과 마찬가지로 함수(function)를 만들 수 있다. 처음에 def라고 명시하면 함수 정의를 할 수 있다.

#add라는 이름의 함수를 정의한다. 인자는 a와 b이다.
def add(a,b):
    c=a+b
    print(c)
    
#add함수를 호출한다. 인자 개수에 맞게 값을 넣어준 후 호출한다.
add(3,2) #5
add(5,7) #12

#return을 사용하여 값을 리턴받는다. 위의 방식보다 밑에 방식이 더 일반적이다.
def add(a,b):
    c=a+b
    return c

print(add(3,2))

#리턴이 튜플 방식으로 2개도 된다..3개도 된다..헐
def add(a,b):
    c=a+b
    d=a-b
    return c,d

print(add(3,2)) #(5,1)

람다 함수

함수를 좀 더 편리하게 사용하기 위해 람다 함수라는 것을 제공한다. 함수가 따로 필요없는 익명의 표현식이라고 볼 수 있다. 밑의 예시를 보자.

#일반적인 함수 정의 방법
def plus_one(x):
    return x+1
print(plus_one(1)) #2

#람다함수 정의 방법
plus_two=lambda x: x+2
print(plus_two(1)) #3

#map(함수,자료(list등)):자료구조가 함수로 매핑되서 결과 반환
a=[1,2,3]
print(list(map(plus_one,a))) #[2,3,4]

print()

#람다함수를 사용하여 위와 같은 결과 반환. map의 첫번째 인자에 일반함수가 아닌 람다함수가 들어갈 수 있다.
print(list(map(lambda x:x+1,a)))) #[2,3,4]
반응형