[0425] TIL 6일차

nikevapormax·2022년 4월 25일
0

TIL

목록 보기
6/116
post-custom-banner

😂 python 문법

😭 문자열

- 기본형

  • 파이썬에서는 따옴표로 문자열을 감싸지 않으면 변수로 인식!
a = 'a'						# 작은 따옴표나
b = "b"						# 큰 따옴표 모두 같은 뜻!
c = "이렇게는 쓰면 안됨'	    # 따옴표는 종류가 같아야 함!

- 문자열 연산

  • 두 개 이상의 문자열을 더하면 문자열이 이어져서 출력됨
first_name = "nike"
last_name = "daybreak"

first_name + last_name  # nikedaybreak
first_name + " " + last_name  # nike daybreak (공백도 사용가능)

a = "2"
b = "4"
a + b    # 24 

a = "3"
b = 10
a + b    # error! (문자열과 숫자의 합은 불가)
		 # int(a) + b 또는 a + str(b)는 가능!

- 문자열의 길이

len(문자열)

문자열의 길이 그대로 나오고, for문에서 루프돌릴 때 사용하거나 비교에서도 많이 사용됨!
인덱스와 조금 헷갈릴 수 있으니 주의!

- 인덱싱, 슬라이싱

  • 인덱스 : 문자열의 몇 번째 글자인지 부르기 위해 사용하며, 인덱스의 경우 0부터 시작

    f="abcdefghijklmnopqrstuvwxyz"
    f[5]   # f
  • 슬라이싱 : 문자열의 일부를 잘라낼 때 사용

    f="abcdefghijklmnopqrstuvwxyz"
    
    f[4:15]  # efghijklmno           f[4]부터 f[15] 전까지
    f[8:]    # ijklmnopqrstuvwxyz    f[8]부터 끝까지
    f[:7]    # abcdefg               f[0]부터 f[7] 전까지
    f[:]     # abcdefghijklmnopqrstuvwxyz  처음부터 끝까지
  • split('문자열')을 통해 문자열을 자를 수 있음
    예전부터 계속 연습했던 이메일 자르기에서 쓰인거!

    domain = myemail.split('@')[1].split('.')[0]

😭 리스트

- 기본형

  • 빈 리스트를 선언할 때는 c = [] 또는 d = list() 사용
  • 서로 다른 자료형끼리도 구성 가능하며, 이중 리스트도 가능하고 리스트 안에 딕셔너리도 가능
a = [1, 5, 2]
b = [3, "a", 6, 1]

e = [1, 2, 4, [2, 3, 4]]

- 리스트의 길이

  • 문자열과 같이 len()을 사용해 잴 수 있음

- 인덱싱, 슬라이싱

  • 리스트는 순서가 있기 때문에 인덱싱과 슬라이싱이 모두 가능
  • 인덱스는 0부터 시작!
a = [1, 3, 2, 4]
print(a[3])  		# 4
print(a[1:3]) 		# [3, 2]
print(a[-1]) 		# 4 (맨 마지막 것) -> 문제풀다보면 은근히 유용!
                    #                 -> 스택에서도 사용!

- 중첩된 리스트

  • 쉽게 생각하면 된다. 현재 인덱스가 2인 곳에 리스트가 있고, 해당 리스트에서 30을 꺼내오고 싶다면 차례대로 불러준다고 생각하면 덜 헷갈린다. 따라서 a[2][1]과 같이 찾고 싶은 녀석의 인덱스를 하나씩 매겨가면서 진행하면 된다.
a = [1, 2, [9, 30], 1]
print(a[2])      # [9, 30]
print(a[2][0])   # 9

- 리스트에 요소 추가

  • flask를 통해 서버에서 요청을 주고 받을 때를 생각하면 된다. ajax 함수를 작성할 때 우리는 이미 append를 썼다. 파이썬도 마찬가지로 append를 통해 값을 추가할 수 있다.
a = [1, 2, 3, 4]
a.append('문자열이 나올줄 몰랐지?')

# a = [1, 2, 3, 4, '문자열이 나올줄 몰랐지?']

- 정렬

  • sort()를 통해 정렬을 할 수 있으며, defalut 값은 오름차순임
  • a.sort(reverse=True)로 작성하면 내림차순으로 출력됨

- 내용물 확인하기

a = [2, 1, 4, "2", 6]
print(1 in a)      # True
print("1" in a)    # False
print(0 not in a)  # True

😭 딕셔너리

- 기본형

  • {'key' : 'value'}의 형태
person = {"name":"Bob", "age": 21}
  • 빈 딕셔너리 생성
a = {}
a = dict()
  • 딕셔너리의 value 값으로는 아무 자료형이나 다 올 수 있고, 다른 딕셔너리 또한 추가 가능

- 인덱싱

  • 딕셔너리에는 순서가 없기 때문에 인덱싱 불가!!!

- 값 갱신, 새로운 값 추가

person = {"name":"Bob", "age": 21}

# 이름 밸류값 갱신
person["name"] = "Robert"
print(person)  # {'name': 'Robert', 'age': 21}

# 새로운 키-밸류값 추가
person["height"] = 174.8
print(person)  # {'name': 'Robert', 'age': 21, 'height': 174.8}

- 내용물 확인하기

person = {"name":"Bob", "age": 21}

print("name" in person)       # True
print("email" in person)      # False
print("phone" not in person)  # True

😭 튜플

- 기본형

  • 리스트와 비슷하고, 순서도 존재하지만 불변인 자료형
a = (1,2,3)

# a[1] = 2
# a[2] = 4와 같은 작업 불가!

- 활용

  • 리스트와 튜플로 딕셔너리와 비슷하게 만들 때 사용
a_dict = [('bob','24'),('john','29'),('smith','30')]

😭 집합

- 기본형

  • set은 중복을 제거해줌
  • 교집합(&), 차집합(-), 합집합(|) 등의 연산도 가능
a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1]

a_set = set(a)
# a_set = {1, 2, 3, 4, 5}

😭 try-except 문

- 기본형

  • 에러가 있어도 건너뛸 수 있게 해줌
  • 너무 많이 사용하면 어디서 에러가 났는지 못 찾을 수도 있음
  • 다음과 같이 입력하며, except의 경우 에러에 대한 경고를 class로 예외 처리 함수를 만들고 해당 부분에서 사용할 수도 있음
for person in people:
    try:
        if person['age'] > 20:
            print (person['name'])
    except:
        name = person['name']
        print(f'{name} - 에러입니다')

😭 삼항연산자

- 기본형

  • 여러 줄의 간단한 for문이나 짧은 for문 등을 간결하게 줄 일 수 있다는 점에서 굉장히 매력적인 아이지만, 복잡한 조건식에서 사용하게 된다면 가독성이 떨어질 수도 있음
  • 짧은 것도 좋지만 좋은 코드는 읽기 좋은 코드라는 것을 명심!

(참일 때 값) if (조건) else (거짓일 때 값)


😭 map

- 기본형

  • map(function, iterable)
  • map 함수의 반환 값은 map객체 이기 때문에 해당 자료형을 list 혹은 tuple로 형 변환
  • 코딩 테스트 준비 때와 같이 여러 개의 input()을 받아아올 때도 사용
    # 여러 개의 input을 split에 들어있는 것을 기점으로 나누어 받는데, 모두 int형으로 매핑하렴
    n = map(int, input().split())
    

😭 filter

- 기본형

  • 여러 개의 데이터로 부터 일부의 데이터만 추려낼 때 사용
  • filter(조건 함수, 순회 가능한 데이터)
  • map 함수와 유사하며, True 인 것들만 뽑음
result = filter(lambda x: x['age'] > 20, people)
print(list(result))

😭 lambda

- 기본형

  • lambda 매개변수 : 표현식
  • 두 수를 더하는 식을 람다로 표현
a = (lambda x, y: x+y)(10, 20)

print(a) # 30
  • 사람들 중 나이가 20을 초과하는 사람들에게 성인, 아닌 사람들에게 청소년이라고 매핑하며, map을 사용했으므로 결과는 list를 통해 뽑아줘야 함. 그렇지 않으면 map에 대한 값이 출력되어 원하는 값을 바로 못 얻을 수도 있음
result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
print(list(result))

😭 class

- 개념

  • 똑같은 무엇인가를 계속해서 만들어 낼 수 있는 설계 도면
  • 클래스로 간단히 구현한 몬스터의 체력
    • 클래스의 개념과 같이 하나의 몬스터 틀을 만들어 놓는다면 그 이후에는 추가적으로 몬스터에 대한 코딩을 할 필요가 없음
class Monster():
    hp = 100
    alive = True

    def damage(self, attack):
        self.hp = self.hp - attack
        if self.hp < 0:
            self.alive = False

    def status_check(self):
        if self.alive:
            print('살아있다')
        else:
            print('죽었다')

m = Monster()
m.damage(120)

m2 = Monster()
m2.damage(90)

m.status_check()
m2.status_check()
profile
https://github.com/nikevapormax
post-custom-banner

0개의 댓글