๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
TIL๐Ÿ”ฅ/๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ_AI School 5๊ธฐ

[๋ฉ‹์‚ฌ] AI SCHOOL 5๊ธฐ_ Day 8

by hk713 2022. 3. 21.

ํ•จ์ˆ˜(function, method)

ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ๋•Œ ์ƒ๊ฐํ•ด์•ผ๋  4๊ฐ€์ง€

  • x๊ฐ’ → y = test()
  • y๊ฐ’ → test(x)
  • ํ•„์š”ํ•œ ๋‚ด๋ถ€ ์ฒ˜๋ฆฌ
  • ํ•จ์ˆ˜ ์ด๋ฆ„ : ์ตœ๋Œ€ํ•œ ์˜๋ฏธ์žˆ๊ฒŒ ์“ฐ๋Š”๊ฒŒ ์ข‹๋‹ค

* ์ฐธ๊ณ ) x ๋‚˜ y ๊ฐ’์ด ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค

def total_nums(num1, num2=7): # ๋””ํดํŠธ ๊ฐ’ ์ง€์ •๋„ ๊ฐ€๋Šฅํ•˜๋‚˜ ๋’ค์—์„œ๋ถ€ํ„ฐ ์ง€์ •ํ•ด์•ผํ•œ๋‹ค
	total = num1 + num2
    return total # return ๊ฐ’์€ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค

total_nums(13) # ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰(ํ˜ธ์ถœ)ํ•  ๋•Œ num1, num2 ๋ณ€์ˆ˜๊ฐ€ ์ƒ๊ธฐ๊ณ , 
	  # return์„ ํ•˜๋Š” ์ˆœ๊ฐ„ total์ด๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ๊ทธ ์•ˆ์— ๋‹ด๊ธด "๊ฐ’"์ด ๋‚˜๊ฐ„๋‹ค

๋งค๊ฐœ๋ณ€์ˆ˜(parameter) : ํ•จ์ˆ˜์— ์ž…๋ ฅ์œผ๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์„ ๋ฐ›๋Š” ๋ณ€์ˆ˜. (์—ฌ๊ธฐ์„œ๋Š” num1, num2)

์ธ์ˆ˜(argument) : ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•˜๋Š” ์ž…๋ ฅ๊ฐ’. (์—ฌ๊ธฐ์„œ๋Š” 13)


Coding convention

PEP8(Python Enhancement proposals)

: ํŒŒ์ด์ฌ ์–ธ์–ด๋ฅผ ๋ฐœ์ „์‹œ์ผœ ๋‚˜๊ฐ€๊ณ ์ž ํ•˜๋Š” ๋…ธ๋ ฅ์—์„œ ๋ชจ์€ ์ฝ”๋“œ ์ž‘์„ฑ ์ œ์•ˆ๋“ค

 

[ ๋ณ€์ˆ˜ ๋„ค์ด๋ฐ ๊ทœ์น™ ]

  • snake_case ← ํŒŒ์ด์ฌ์˜ ๋ณ€์ˆ˜๋ช…/ํ•จ์ˆ˜๋ช…
  • PascalCase ← ํŒŒ์ด์ฌ์˜ class
  • camelCase
  • kebab-case

List(๋ฆฌ์ŠคํŠธ)

๐Ÿ”ฝ ๋ฆฌ์ŠคํŠธ ์•„์ดํ…œ์„ ์‚ญ์ œํ•˜๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•

1. ๋ฐ์ดํ„ฐ์˜ ์ž๋ฆฌ(์ˆœ์„œ)๋ฅผ ํ™œ์šฉํ•œ๋‹ค : del list[index๋ฒˆํ˜ธ]

2. ๋ฐ์ดํ„ฐ ๊ฐ’ ์ž์ฒด๋ฅผ ํ™œ์šฉํ•œ๋‹ค : list.remove(๊ฐ’)

3. list.pop() - ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋ฐ˜ํ™˜(return)ํ•œ๋‹ค. stack ๊ตฌ์กฐ

 

๐Ÿ”ฝ ๋ฆฌ์ŠคํŠธ ์•„์ดํ…œ ์ •๋ ฌ

list.sort()

* ์ฐธ๊ณ ) ์—ญ์œผ๋กœ ์ •๋ ฌ : list.sort( reverse = True )

 

Dict(๋”•์…”๋„ˆ๋ฆฌ)

value ๊ฐ’ ๊ตฌํ•˜๊ธฐdict.get( 'key ๊ฐ’' )

* ์ฐธ๊ณ )

์—†๋Š” key ๊ฐ’์„ ๊ตฌํ•  ๋•Œ, '์—†๋‹ค'๋ผ๊ณ  ๋‚˜ํƒ€๋‚ด๊ณ  ์‹ถ์œผ๋ฉด?!  dict.get('key ๊ฐ’', '์—†๋‹ค') 

๋ชจ๋“  value ๊ฐ’์„ ๊ตฌํ•˜๋ ค๋ฉด?! dict.values()

 

tuple(ํŠœํ”Œ)

ํŠœํ”Œ์€ ์ˆ˜๋™์ ์œผ๋กœ ๋ฐ›์•„๋“ค์—ฌ์„œ ์“ฐ์ง€, ๋งŒ๋“ค์–ด์„œ ์“ธ ์ผ์€ ๋ณ„๋กœ ์—†๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฆฌํ„ด๊ฐ’์„ ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋กœ ๋ฐ›์œผ๋ฉด ํŠœํ”Œ๋กœ ๋‚˜์˜จ๋‹ค.

 

set(์ง‘ํ•ฉ)

์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ง‘ํ•ฉ ์—ฐ์‚ฐ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค(ํ•ฉ์ง‘ํ•ฉ, ๊ต์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ)

  • ํ•ฉ์ง‘ํ•ฉ : set.union( ์„ธํŠธ1, ์„ธํŠธ2 ) ๋˜๋Š” OR ์—ฐ์‚ฐ์ž
  • ๊ต์ง‘ํ•ฉ: set.intersection( ์„ธํŠธ1, ์„ธํŠธ2 ) ๋˜๋Š” AND ์—ฐ์‚ฐ์ž &
  • ์ฐจ์ง‘ํ•ฉ: set.difference( ์„ธํŠธ1, ์„ธํŠธ2 ) ๋˜๋Š” ๋บ„์…ˆ ์—ฐ์‚ฐ์ž -
  • ๋Œ€์นญ์ฐจ์ง‘ํ•ฉ: set.symmetric_difference( ์„ธํŠธ1, ์„ธํŠธ2 ) ๋˜๋Š” XOR ์—ฐ์‚ฐ์ž ^

IF  (์กฐ๊ฑด)

- 0 ์ด ์•„๋‹Œ ๋ชจ๋“  ์ˆ˜ & ๋น„์–ด์žˆ์ง€ ์•Š์€ ์ง‘ํ•ฉํ˜• ๋ณ€์ˆ˜ : True 

- 0 or ๋น„์–ด์žˆ๋Š” ๋ชจ๋“  ์ง‘ํ•ฉํ˜• ๋ณ€์ˆ˜ : False 

 

For

index์™€ ์›์†Œ๋ฅผ ๋™์‹œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•! enumerate() ๋‚ด์žฅํ•จ์ˆ˜

for index, letter in enumerate(['H','K']):
	print(index, letter)

# ๊ฒฐ๊ณผ
# 0 H
# 1 K

BoW(Bag of Words) - ๋‹จ์–ด ์‚ฌ์ „ ๋งŒ๋“ค๊ธฐ

# ์˜ˆ์‹œ ๋ฌธ์žฅ
sentence = 'This is Python world. Python is very fun. I like python'

# ๋ฌธ์žฅ ์ชผ๊ฐœ๊ธฐ - ๋Œ€/์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์—†์ด ๋‹จ์–ด ์‚ฌ์šฉ ํšŸ์ˆ˜๋ฅผ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พผ ์ƒํƒœ์—์„œ ๋‚˜๋ˆ”!
words = sentence.lower().split(' ')

# ๋ฐฉ๋ฒ•1
# ์–˜๊ฐ€ ์ฃผ์ธ๊ณต!
bag_of_words = {} 

# ํšŸ์ˆ˜ ์ฒดํฌ
for word in words:
    if word not in bag_of_words: 
        bag_of_words[word] = 1
    else:
        bag_of_words[word] += 1
print(bag_of_words)

# ๋ฐฉ๋ฒ•2
# collections ๋ชจ๋“ˆ Counter ์‚ฌ์šฉํ•˜๊ธฐ
from collections import Counter

bag_of_words = dict(Counter(words))
print(bag_of_words)

 

pass ์™€ continue ์ฐจ์ด

pass๋Š” ๊ตฌ๋ฌธ์ƒ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ์ด ์•„๋ฌด ์ž‘์—…๋„ ํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

์ฆ‰, ์‹คํ–‰ํ•  ์ฝ”๋“œ๊ฐ€ ์—†์œผ๋‹ˆ ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ€! ๋ผ๋Š” ์˜๋ฏธ๋‹ค.

continue๋Š” ๋‹ค์Œ ์ˆœ๋ฒˆ์˜ ๋ฃจํ”„๊ฐ€ ๋Œ๋„๋ก ์ด๋ฒˆ ๋ฐ”ํ€ด๋Š” ์—ฌ๊ธฐ์„œ ๋„˜์–ด๊ฐ€! ๋ผ๋Š” ์˜๋ฏธ๋‹ค.


class(ํด๋ž˜์Šค)

class๋Š” ๊ณง ๋ถ•์–ด๋นต ํ‹€๋กœ ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•˜๋‹ค. ์„ค๊ณ„๋„(blueprint)์— ๋น„์œ ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ ๋ถ•์–ด๋นต์€ (ํด๋ž˜์Šค) (์ธ์Šคํ„ด์Šค) ๊ฐ์ฒด ๋ณ€์ˆ˜๋‹ค  class instance object variable

((ํด๋ž˜์Šค ๊ฐ์ฒด ๋ณ€์ˆ˜, ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค, ๊ฐ์ฒด ๋ณ€์ˆ˜, ๋ณ€์ˆ˜, ์ธ์Šคํ„ด์Šค ๋“ฑ ๋‹ค ๊ฐ™์€ ๋ง์ด๋‹ค.))
๋ถ•์–ด๋นต์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ฐฐ๋‚˜์˜ ์‹œ๊ฐ„๋™์•ˆ ์กด์žฌํ•˜๋‹ค๊ฐ€ ์‚ฌ๋ผ์งˆ ๊ฒƒ์ด๊ธฐ์— 'instant'์—์„œ ๋”ฐ์™€ ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ๋ถ™์˜€๋‹ค.

# class ์˜ˆ์‹œ
class Person:

    # ์ƒ์„ฑ์ž(Constructor) - ํด๋ž˜์Šค๋ผ๋Š” ์„ค๊ณ„๋„๋ฅผ ๋”ฐ๋ผ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ ์ดˆ๊ธฐํ™” ๊ฐ’
    def __init__(self):
        self.things = ['book','pencil','laptop']

    # ์†Œ์ง€ํ’ˆ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜
    def check_items(self):
        print(self.things)

    # ์†Œ์ง€ํ’ˆ ๋ฌผ๊ฑด ์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜
    def plus_item(self, item):
        self.things.append(item)
        print(self.things)
      
# ์‚ฌ์šฉํ•˜๊ธฐ
User_A = Person()

User_A.check_items()  
# ๊ฒฐ๊ณผ: ['book', 'pencil', 'laptop']

User_A.plus_item('bible')
# ๊ฒฐ๊ณผ: ['book', 'pencil', 'laptop', 'bible']

 

 

โš ๏ธ ํ•ด๋‹น ๊ธ€์€ ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ AI SCHOOL ๊ต์œก ๋‚ด์šฉ์„ ๋ณต์Šตํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค

โš ๏ธ ์˜ˆ์‹œ ์ฝ”๋“œ๋Š” ๋ชจ๋‘ ๋ณ€ํ˜•ํ–ˆ์Šต๋‹ˆ๋‹ค

๋Œ“๊ธ€