230814 TIL

요시롱·2023년 8월 14일

TIL

목록 보기
4/8
post-thumbnail

Python 복습

딕셔너리, 제어문
새롭게 알게된 것, 자주 헷갈리는 것 위주로 정리


SyntaxError : invalid non-printable character U+00A0

  • 코드의 스페이스(space)가 파이썬의 포맷과 같지 않아서 발생한 에러
  • 공백 특수문자 ㄱ + 한자키 1번

dict의 삭제 메소드

  • del : key를 지정하여 요소를 삭제한다.
  • pop() : key를 지정하여 요소를 삭제한다. 삭제된 요소의 Value를 반환한다.
  • popitem() : 가장 마지막 요소를 삭제한다. 삭제된 요소의 Key와 Value를 튜플 형태로 반환한다.
menu = {
    '이름' : '불닭볶음면',
    '가격' : 1800,
    '옵션' : '치즈 추가',
    '추천 여부' : True
}

del menu['추천 여부']
print(menu)  # {'이름': '불닭볶음면', '가격': 1800, '옵션': '치즈 추가'}
print('--------------')
menu.pop('가격')
print(menu)  # {'이름': '불닭볶음면', '옵션': '치즈 추가'}
print('--------------')
menu.popitem()
print(menu)  # {'이름': '불닭볶음면'}
print('--------------')

요소 유무에 따른 boolean값

a = [1, 2, 3]
b = []

print(bool(a), bool(b))  # True, False

# 요소가 있으면 True 요소가 없으면 False
  • 따라서 아래의 두 코드는 동일한 의미이다.
# 1
if len(test_list) != 0:
    print(test_list)
    
#2
if test_list:
    print(test_list)

enumerate()

  • "낱낱히 세다" 라는 뜻으로, 문자열이나 컨테이너 자료형(리스트, 딕셔너리, 집합)을 입력받아 순서와 요소를 포함하는 객체로 반환한다.
fruits = ['apple', 'banana', 'grape']

print(enumerate(fruits))     # <enumerate object at 0x7e94e9730040>
fruits_list = list(enumerate(fruits))
print(fruits_list)           # [(0, 'apple'), (1, 'banana'), (2, 'grape')]
print(type(fruits_list[0]))  # tuple
# 예시1
for idx, fruit in enumerate(fruits):
    print(idx, fruit)

# 예시2
s = '여름은수박의계절'
print(list(enumerate(s)), end = ' ')
# [(0, '여'), (1, '름'), (2, '은'), (3, '수'), (4, '박'), (5, '의'), (6, '계'), (7, '절')] 

딕셔너리의 확장 문법

score = { 'A' : 90, 'B' : 80, 'C' : 70 }

good_score = {key : value for key, value in score.items() if value > 80}
# {'A' : 90 }

isnumeric(), isdecimal(), isdigit()

str.isnumeric()

  • 문자열 내의 모든 문자(char)가 숫자(numeric characters)이고, 빈 문자열이 아닌 경우 True를 반환한다.

  • numeric characters에는 digit, unicode numeric value property가 포함된다.
    -> (숫자(0~9), 숫자(0~9) 유니코드, 지수, 분수)

  • 분수, 거듭제곱 등의 형태는 True

  • 음수, float는 -. 이 있기 때문에 False

nums = ['10', '3²', '½', '-1', '0.3']
for n in nums:
    print(n.isnumeric())
    
    # True, True, True, False, False

str.isdigit()

  • 문자열 내의 모든 문자(char)가 digit이고, 빈 문자열이 아닌 경우 True를 반환한다.

  • digit에는 십진수 문자와 위 첨자숫자와 같은 특수처리가 필요한 숫자가 포함된다.
    -> (숫자(0~9), 숫자(0~9) 유니코드, 지수)

  • isnumeric과 달리, 분수가 제외된다.

nums = ['10', '3²', '½', '-1', '0.3']
for n in nums:
    print(n.isdigit())
    
    # True, True, False, False, False

isdecimal()

  • 문자열 내의 모든 문자(char)가 10진수 문자이고, 빈 문자열이 아닌 경우 True를 반환한다.
  • 10진수 문자는 십진법으로 숫자를 구성할 때 사용될 수 있는 문자들이다.
    -> (숫자(0~9), 숫자(0~9) 유니코드)
nums = ['10', '3²', '½', '-1', '0.3']
for n in nums:
    print(n.isdecimal())
    
    # True, False, False, False, False

참고 : 파이썬 공식문서
참고 : [string] Python - isnumeric() 메서드 - 문자열이 numeric 숫자뿐인지 체크. (= 이즈뉴메릭)

0개의 댓글