22. 09. 14.

hyo_dยท2022๋…„ 9์›” 14์ผ
0

์บ ํ”„ 11์ผ์ฐจ

1. ์ผ๊ณผ

๐Ÿ‘‰ ํŒŒ์ด์ฌ ๋ฌธ๋ฒ•(์ด์ฐฝํ˜ธ ํŠœํ„ฐ๋‹˜)

๐Ÿ‘‰ ํŒŒ์ด์ฌ ๊ณผ์ œ(ํด๋ž˜์Šค ํ™œ์šฉ, try/except, ๋ฆฌ์ŠคํŠธ ํ•„ํ„ฐ ๋ฐ ์ •๋ ฌ)

2. try / exception์„ ํ™œ์šฉํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ

1) python์—์„œ๋Š” try / except ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค„์ˆ˜ ์žˆ๋‹ค.

number = "num"

try: # try ๊ตฌ๋ฌธ ์•ˆ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ except๋กœ ๋„˜์–ด๊ฐ
    number = int(number) # "num"์„ ์ˆซ์ž๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์—์„œ ์—๋Ÿฌ ๋ฐœ์ƒ
except: # ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฒ˜๋ฆฌ
    print(f"{number}์€(๋Š”) ์ˆซ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.")

2) ์—๋Ÿฌ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋กœ์ง ์ฒ˜๋ฆฌ

number = input()

try:
    int(number)
    10 / number

except ValueError: # int๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋–„
    print(f"{number}์€(๋Š”) ์ˆซ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.")
    
except ZeroDivisionError: # 0์œผ๋กœ ๋‚˜๋ˆ„๋ฉด์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ
    print("0์œผ๋กœ๋Š” ๋‚˜๋ˆŒ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.")
    
except Exception as e: # ์œ„์—์„œ ์ •์˜ํ•˜์ง€ ์•Š์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ(๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ)
    print(f"์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. error : {e}")

# except ๋ฌธ๋ฒ• ๋˜ํ•œ if / elif์™€ ๊ฐ™์ด ์—ฐ๋‹ฌ์•„์„œ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

3. stacktrace

1) stacktrace๋Š” python ๋ฟ๋งŒ์ด ์•„๋‹Œ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์ด๋‹ค.

2) ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ ํ•œ ์œ„์น˜๋ฅผ ์ฐพ์•„๋‚ด๊ธฐ ์œ„ํ•ด ํ˜ธ์ถœ ๋œ ํ•จ์ˆ˜์˜ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๊ณ 
๊ฐœ๋ฐœ์ž๋Š” stacktrace๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์œ„์น˜๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋‹ค.

def ์ง‘๊นŒ์ง€_๊ฑธ์–ด๊ฐ€๊ธฐ():
    print(error) # ์„ ์–ธ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ํ˜ธ์ถœํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—๋Ÿฌ ๋ฐœ์ƒ

def ๋ฒ„์Šค_ํƒ‘์Šน():
    ์ง‘๊นŒ์ง€_๊ฑธ์–ด๊ฐ€๊ธฐ()

def ํ™˜์Šน():
    ๋ฒ„์Šค_ํƒ‘์Šน()

def ์ง€ํ•˜์ฒ _ํƒ‘์Šน():
    ํ™˜์Šน()

def ํ‡ด๊ทผํ•˜๊ธฐ():
    ์ง€ํ•˜์ฒ _ํƒ‘์Šน()

ํ‡ด๊ทผํ•˜๊ธฐ()

"""
Traceback (most recent call last):
  File "sample.py", line 17, in <module>
    ํ‡ด๊ทผํ•˜๊ธฐ()
  File "sample.py", line 15, in ํ‡ด๊ทผํ•˜๊ธฐ
    ์ง€ํ•˜์ฒ _ํƒ‘์Šน()
  File "sample.py", line 12, in ์ง€ํ•˜์ฒ _ํƒ‘์Šน
    ํ™˜์Šน()
  File "sample.py", line 9, in ํ™˜์Šน
    ๋ฒ„์Šค_ํƒ‘์Šน()
  File "sample.py", line 5, in ๋ฒ„์Šค_ํƒ‘์Šน
    ์ง‘๊นŒ์ง€_๊ฑธ์–ด๊ฐ€๊ธฐ()
  File "sample.py", line 2, in ์ง‘๊นŒ์ง€_๊ฑธ์–ด๊ฐ€๊ธฐ
    print(error)
NameError: name 'error' is not defined. Did you mean: 'OSError'?
"""

4. ์ถ•์•ฝ์‹(Comprehension)

1) ์ถ•์•ฝ์‹์ด๋ž€?

์ถ•์•ฝ์‹์€ ๊ธด ์ฝ”๋“œ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์ค„์ผ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ๋‚จ์šฉํ•  ๊ฒฝ์šฐ ๊ฐ€๋…์„ฑ์ด
๋–จ์–ด์ง€๊ณ  ์ถ”ํ›„ ์ฝ”๋“œ ๊ด€๋ฆฌ๊ฐ€ ํž˜๋“ค์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

list, set, tuple, dict ์ž๋ฃŒํ˜•์ด ์ถ•์•ฝ์‹์„ ์ง€์›ํ•œ๋‹ค.

๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋Š” ๋˜‘๊ฐ™์œผ๋ฉฐ, ์–ด๋–ค ๊ด„ํ˜ธ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ / ์–ด๋–ค ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•˜๋Š”์ง€์—
๋”ฐ๋ผ ์ €์žฅ๋˜๋Š” ์ž๋ฃŒํ˜•์ด ๋‹ฌ๋ผ์ง„๋‹ค.

์ถ•์•ฝ์‹์€ ๋ชจ๋‘ ๋™์ผํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๊ฐ€์ง€ ์ž๋ฃŒํ˜•์— ์ต์ˆ™ํ•ด์ง€๋ฉด ๋‹ค๋ฅธ
์ž๋ฃŒํ˜•์—๋„ ์ ์šฉํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

2) list / tuple / set ์ถ•์•ฝ์‹ ํ™œ์šฉ๋ฒ•

# ๊ธฐ๋ณธ์ ์ธ ํ™œ์šฉ ๋ฐฉ๋ฒ•
# [list์— ๋‹ด๊ธธ ๊ฐ’ for ์š”์†Œ in ๋ฆฌ์ŠคํŠธ]
numbers = [x for x in range(5)] # [0, 1, 2, 3, 4]

# ์กฐ๊ฑด๋ฌธ์€ ์ถ•์•ฝ์‹ ๋’ท๋ถ€๋ถ„์— ์ž‘์„ฑํ•˜๋ฉฐ, ์ถ•์•ฝ์‹์ด True์ธ ๊ฒฝ์šฐ list์— ๊ฐ’์ด ๋‹ด๊ธด๋‹ค.
even_numbers = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]

# ์•„๋ž˜์™€ ๊ฐ™์ด ํ™œ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
people = [
    ("lee", 32),
    ("kim", 23),
    ("park", 27),
    ("hong", 29),
    ("kang", 26)
]

average_age = sum([x[1] for x in people]) / len(people)
print(average_age) # 27.4

#list ์ถ•์•ฝ์‹์˜ []๋ฅผ ()ํ˜น์€ {}๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด tuple, set ์ถ•์•ฝ์‹์„ ์‚ฌ์šฉํ•˜์‹ค์ˆ˜ ์žˆ๋‹ค.

3) dictionary ์ถ•์•ฝ์‹ ํ™œ์šฉ๋ฒ•

# dictionary ์ถ•์•ฝ์‹์˜ ๊ตฌ์กฐ๋Š” list์™€ ๋™์ผํ•˜์ง€๋งŒ, key / value ํ˜•ํƒœ๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
people = [
    ("lee", 32, "man"),
    ("kim", 23, "man"),
    ("park", 27, "woman"),
    ("hong", 29, "man"),
    ("kang", 26, "woman")
]

people = {name: {"age": age, "gender": gender} for name, age, gender in people}
print(people)

# result print
"""
{
    'lee': {'age': 32,
             'gender': 'man'},
    'kim': {'age': 23,
             'gender': 'man'},
    'park': {'age': 27,
             'gender': 'woman'},
    'hong': {'age': 29,
             'gender': 'man'},
    'kang': {'age': 26,
             'gender': 'woman'}
 }
"""

5. lambda / map / filter / sort ํ™œ์šฉํ•˜๊ธฐ

1) lambda

  • ๋‹ค๋ฅธ ๋ง๋กœ ์ต๋ช… ํ•จ์ˆ˜(anonymous function)๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ ์ฃผ๋กœ map / filter / sort ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋œ๋‹ค.

2) map ํ•จ์ˆ˜ ํ™œ์šฉ

# map์€ ํ•จ์ˆ˜์™€ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋“ค๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์ค€๋‹ค.
string_numbers = ["1", "2", "3"]
integer_numbers = list(map(int, string_numbers))
print(integer_numbers) # [1, 2, 3]

# map ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
string_numbers = ["1", "2", "3"]
integer_numbers = []

for i in string_numbers:
    integer_numbers.append(int(i))

print(integer_numbers) # [1, 2, 3]

# list ์ถ•์•ฝ์‹์œผ๋กœ๋„ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
# map๊ณผ list ์ถ•์•ฝ์‹ ์ค‘ ์–ด๋–ค๊ฑธ ์จ์•ผ ํ• ์ง€ ๊ณ ๋ฏผ๋œ๋‹ค๋ฉด ์ด ๊ธ€์„ ์ฝ์–ด๋ณด์‹œ๋Š”๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.
string_numbers = ["1", "2", "3"]
integer_numbers = [int(x) for x in string_numbers]
print(integer_numbers) # [1, 2, 3]


# map ํ•จ์ˆ˜์™€ lambda ํ•จ์ˆ˜๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๋‹ค์ฑ„๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
numbers = [1, 2, 3, 4]
double_numbers = list(map(lambda x: x*2, numbers))
print(double_numbers) # [2, 4, 6, 8]

3) filter ํ•จ์ˆ˜ ํ™œ์šฉ

# filter ํ•จ์ˆ˜๋Š” map๊ณผ ์œ ์‚ฌํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์กฐ๊ฑด์ด ์ฐธ์ธ ๊ฒฝ์šฐ ์ €์žฅํ•œ๋‹ค.
numbers = [1, 2, 3, 4, 5, 6, 7, 8]

even_numbers = list(filter(lambda x: x%2 == 0, numbers))
print(even_numbers) # [2, 4, 6, 8]

# filter ํ•จ์ˆ˜ ๋˜ํ•œ list ์ถ•์•ฝ์‹์œผ๋กœ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
numbers = [1, 2, 3, 4, 5, 6, 7, 8]

even_numbers = [x for x in numbers if x%2 == 0]
print(even_numbers) # [2, 4, 6, 8]

4) sort ํ•จ์ˆ˜ ํ™œ์šฉ

# sort ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด list๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
numbers = [5, 3, 2, 4, 6, 1]
numbers.sort()
print(numbers) # [1, 2, 3, 4, 5, 6]

# sort์™€ lambda ํ•จ์ˆ˜๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ๋ณต์žกํ•œ ๊ตฌ์กฐ์˜ list๋„ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
people = [
    ("lee", 32),
    ("kim", 23),
    ("park", 27),
    ("hong", 29),
    ("kang", 26)
]

# ๋‚˜์ด ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ
people.sort(key=lambda x: x[1])
print(people)

# result print
"""
[
    ("kim", 23),
    ("kang", 26),
    ("park", 27),
    ("hong", 29),
    ("lee", 32)
]
"""

ํšŒ๊ณ 

โญ ํŠœํ„ฐ๋‹˜์ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ด์ฃผ์…”์„œ ์‹ฌํ™” ๋ฌธ๋ฒ•์ด์ง€๋งŒ ์•Œ๋“ฏ๋ง๋“ฏ ์•Œ์•„๊ฐ€๋Š” ์ค‘์ด๋‹ค.. ์˜ค๋Š˜๋„ ์–ด๊น€์—†์ด ๊ณผ์ œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ 2๊ฐœ ๋‹ค ์–ด๋ ค์›€ ์—†์ด ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ณผ์ œ์— ๋Œ€ํ•ด์„œ๋Š” ์•ž์œผ๋กœ TIL์— ๊ฐ™์ด ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ๋‚˜์ค‘์— ํ™•์ธํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋”ฐ๋กœ ์˜ฌ๋ฆด ์˜ˆ์ •์ด๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์–ด๋Š ์ˆœ๊ฐ„๋ถ€ํ„ฐ ๋‚ด๊ฐ€ ํ˜„์žฌ ์•Œ๊ณ ์žˆ๋Š” ์ˆ˜์ค€๋ณด๋‹ค ํ›จ์”ฌ ๋งŽ์€ ๊ฒƒ์„ ์š”๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋“ค์ด ๋Œ€๋ถ€๋ถ„์ด๋ผ ์•„์˜ˆ ์†๋„ ๋ชป๋Œ€๊ณ  ์žˆ๋‹ค. ๋ฌผ๋ก  ๊ตฌ๊ธ€๋งํ•ด์„œ ๋‹ต์„ ๋ณด๋ฉด ์กฐ๊ธˆ์€ ์ดํ•ด๋˜๋Š” ๊ฒƒ๋“ค๋„ ์žˆ์ง€๋งŒ ์ง€๊ธˆ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค๋Š” ๊ธฐ์ดˆ๋ถ€ํ„ฐ ํŠผํŠผํžˆ ํ•˜๋Š”๊ฒŒ ๋‚˜์„๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•ด์„œ ์ ํ”„ ํˆฌ ํŒŒ์ด์ฌ๊ณผ ๊ฐ•์˜์ž๋ฃŒ๋ฅผ ๋ณต์Šตํ•˜๊ณ  ์žˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ๋น„๊ตํ•˜๊ธฐ๋ณด๋‹จ ๋‚ด๊ฐ€ ์ง€๊ธˆ ํ•  ์ˆ˜ ์žˆ๋Š” ์„ ์—์„œ ์—ด์‹ฌํžˆ ํ•ด์•ผ์ง€๐Ÿ˜Ž

profile
ํ–‡๋ณ‘์•„๋ฆฌ

0๊ฐœ์˜ ๋Œ“๊ธ€