반응형

 

 

 

자료형 다루기

자료형

  • type( a ) # type( 변수명 ) : 자료형
  • isinstance( 42, int ) # isinstance( 값, 자료형 ) : 자료형 검사

 

my_list = [1, 2, 3]
my_dict = {"풀": 800, "색연필": 3000}
my_tuple = (1, 2, 3)
number = 10
real_number = 3.141592

print(type(my_list))
print(type(my_dict))
print(type(my_tuple))
print(type(number))
print(type(real_number))
<class 'list'>
<class 'dict'>
<class 'tuple'>
<class 'int'>
<class 'float'>

 

 

 

 

인스턴스 이해

클래스

  • 함수나 변수들을 모아 놓은 집합체

인스턴스

  • 클래스에 의해 생성된 객체
  • 인스턴스 각자 자신의 값을 가지고 있다.

 

 

list1과 list2의 값은 같지만, 다른 인스턴스이다.

list1 = [1, 2, 3]
list2 = [1, 2, 3]

if list1 is list1:
    print("당연히 list1과 list1은 같은 인스턴스입니다.")

if list1 == list2:
    print("list1과 list2의 값은 같습니다.")
    if list1 is list2:
        print("그리고 list1과 list2는 같은 인스턴스입니다.")
    else:
        print("하지만 list1과 list2는 다른 인스턴스입니다.")
당연히 list1과 list1은 같은 인스턴스입니다.
list1과 list2의 값은 같습니다.
하지만 list1과 list2는 다른 인스턴스입니다.

 

 

list1과 list2 모두 list 클래스의 인스턴스이다.

list1 = list(range(10))
list2 = [1, 2, 3]

if isinstance( list1, list) and isinstance( list2, list):
    print("list1과 list2는 둘 다 list클래스 입니다.")

 

 

 

 

클래스 만들기

클래스 선언

class Human( ):
    '''사람'''

인스턴스 생성

person1 = Human( )
person2 = Human( )

 

  • 클래스와 인스턴스를 이용하면 데이터와 코드를 사람이 이해하기 쉽게 포장할 수 있다.
class Car():
    '''자동차'''

taxi = Car()

# taxi.name에 "택시"라는 값을 저장하세요.
taxi.name = "택시"

 

 

 

반응형
반응형

 

 

** 시작 인덱스는 포함하고 !  끝 인덱스는 포함하지 않는다 !

slicing

  • 리스트나 문자열에서 값을 여러개 가져오는 기능
text = "hello world"
text = text[ 1:5 ]

list = [ 0, 1, 2, 3, 4, 5 ]
list = list[ 1:3 ]
  • slice를 하면 해당하는 부분의 리스트나 문자열을 새로 만들어 준다.

  • 시작과 끝부분을 얻어 오는 방법

    • list[ 2: ] : 인덱스 2번째부터 끝까지 반환
    • list[ : 2 ] : 처음부터 인덱스 2번째 전까지 반환
    • list[ : ] : 처음부터 끝까지 전부 반환
    •  
text = "hello world"
text[1:5]         # ello          1번째부터 5번째 전까지
text[3:]          # lo world      3번째부터 끝까지
text[:3]          # hel           처음부터 3번째까지
text[:]           # hello world   처음부터 끝까지

 

 

 

 

Slice의 step

step

  • slice한 값의 범위에서 step 값을 주어 그 값만큼 건너뛰어 가져오는 기능
  • list[ 시작값:끝값:step ]

 

 

Slice로 리스트 수정하기

slice 활용

  • 삭제
    • del list[ :5 ] : 처음부터 5번째까지 삭제
  • 수정
    • list[ 1:3 ] = [ 77, 88 ]
    • list[ 1:3 ] = [ 77, 88 ,99 ] : 더 많은 개수로 변환
    • list[ 1:4 ] = [ 8 ] : 더 적은 개수로 변환

 

 

 

반응형
반응형

 

 

 

list = ['가', '나', 다']

1. count()

list.count('가') 

하면 list 안에 '가'가 몇 개 들어있는지를 세어준다. 따라서 1

 

2. len()

len(list)

하면 list 내의 값이 몇 개 들어있는지 세어준다. 따라서 3

 

 

 

반응형
반응형

 

 

 

List의 다양한 기능

  • list.index( value ) : 값을 이용하여 위치를 찾는 기능
  • list.extend( [value1, value2] ) : 리스트 뒤에 값을 추가
  • list.insert( index, value ) : 원하는 위치에 값을 추가
  • list.sort( ) : 값을 순서대로 정렬
  • list.reverse( ) : 값을 역순으로 정렬

 

def safe_index(my_list, value):
    # 함수를 완성하세요
    if value in my_list:
        return my_list.index(value)
	else:
        return None

print(safe_index([1,2,3,4,5], 5))
print(safe_index([1,2,3], 5))

 

list1 = [1, 2, 3, 4]

# 아래줄에서 list1의 1번째 자리에 8을 넣고 원래 있던 값은 오른쪽으로 밀어 보세요.
list1.insert(0, 8)

print("첫 번째 자리에 8을 넣은 결과 : {}".format(list1))

# 아래줄에서 list1을 작은 수부터 큰 수로 정렬해 보세요
list1.sort()

print("list1을 작은 수부터 큰 수로 정렬한 결과 : {}".format(list1))


# 아래줄에서 list1을 거꾸로 만들어 보세요
list1.reverse()

print("list1을 거꾸로 정렬한 결과 : {}".format(list1))

 

 

 

 

List와 문자열

List와 String

  • 리스트와 문자열은 유사하다.
  • 서로 변환이 가능하다.
  • list = str.split( ) : 문자열에서 리스트로
  • " ".join( list ) : 리스트에서 문자열으로 -> 문자들 사이에 공백을 넣어준다.

 

str = "오늘은 날씨가 흐림"

# split()을 이용해서 str을 공백으로 나눈 문자열을 words에 저장하세요
words = 
str.split(" ")


# index()를 이용해서 "흐림"이 words의 몇번째에 있는지 찾고, 
# position에 저장하세요.
position = 
words.index("흐림")


words[position] = "맑음"

# join()을 이용해서 words를 다시 문자열로 바꿔 new_str에 저장하세요. 
# words를 문자열로 바꿀때는 공백 한 칸을 기준으로 붙이면 됩니다.
new_str = 
" ".join(words)


print(new_str)

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형

 

 

 

예외 처리

try:
    a = 3/0
except Exception:
    print("0으로 나눌 수 없습니다.")

 

 

예외의 이름을 모를 때

예외 이름을 모르는 경우 처리 방법

try:
    a = 5
    b = 0
    c = a / b
except 
Exception as ex:
    print('다음과 같은 에러가 발생했습니다: {}'.format( ex ))
다음과 같은 에러가 발생했습니다: division by zero

 

 

 

raise 예외 발생

  • 사용자가 직접 에러를 발생시키는 기능
shops = {
    "송일문방구": {"가위": 500, "크레파스": 3000},
    "알파문구": {"풀": 800, "도화지": 300, "A4용지": 8000},
    "다이소": {"풀": 500, "목공본드": 2000, "화분": 3000}
}

try:
    for shop, products in shops.items():
        for product, price in products.items():
            if product =='풀':
                print("{}: {}원".format(shop, price))
                raise StopIteration
except StopIteration:
    print('풀을 파는 가게를 발견하여 for문을 종료합니다.')

 

 

 

 

단락평가

  • 논리연산에서 코드의 앞만 보고 값을 정할 수 있는 경우 뒤는 보지 않고 값을 결정
  • 복잡한 코드를 단순하게 하는 방식

 

 

bool 값과 논리연산

true, false

  • 숫자 0을 제외한 모든 수 - true
  • 빈 딕셔너리, 빈 리스트를 제외한 모든 딕셔너리, 리스트 - true
  • 아무 값도 없다는 의미인 None - false
  • 빈문자열을 제외한 모든 문자열 - true

 

if []:
    print("[]은 True입니다.")

if [1, 2, 3]:
    print("[1,2,3]은/는 True입니다.")

if {}:
    print("{}은 True입니다.")

if {'abc': 1}:
    print("{'abc':1}은 True입니다.")

if 0:
    print("0은/는 True입니다.")

if 1:
    print("1은 True입니다.")
[1,2,3]은/는 True입니다.
{'abc':1}은 True입니다.
1은 True입니다

 

 

둘 중 하나가 True이면 True이다.

- True가 먼저 나오면 뒤의 값은 보지않고 True를 반환한다.

- False가 먼저 나오면 뒤의 값을 보고 판단한다.

a = 1 or 10    # 1의 bool 값은 True입니다.
b = 0 or 10    # 0의 bool 값은 False입니다.

print("a:{}, b:{}".format(a, b))

 

 

 

 

반응형

'AI > python' 카테고리의 다른 글

파이썬 count()와 len() 차이  (0) 2021.01.10
파이썬 기초 6) 리스트  (0) 2021.01.09
Pythonic Code - split, join  (0) 2021.01.08
파이썬 기초 4) 튜플, while문  (0) 2021.01.08
파이썬 기초 3) 딕셔너리  (0) 2021.01.08
반응형

 

 

 

일반 코드

colors = ["a", "b", "c", "d", "e"]
result = ""

for s in colors:
    result += s

print(result)

 

파이써닉 코드

# pythonic code

colors = ["red", "blue", "green", "yellow"]
result = "".join(colors)

print(result)

 

 

for loop로 append하는 것보다 join으로 한번에 처리하는 것이 더 효율적이다. 그리고 다른 사람들이 이러한 코드를 짜 놓았을 때 이해할 수 있어야 하기 때문에 pythonic code를 알고 가는 것이 중요하다.

 

 

 

 

 

Split 함수

빈칸을 기준으로 문자열 나누기

items = 'zero one two three'.split()

print(items)

 

 

","을 기준으로 문자열 나누기

example = 'python,jquery,javascript'

print(example.split(","))

 

리스트의 각 값을 a,b,c, 변수로 Unpacking

example = 'python,jquery,javascript'

a, b, c = example.split(",")

 

"."을 기준으로 문자열을 나누고 Unpacking

example = 'cs50.gachon.edu'

subdomain, domain, tld = example.split(".")

 

 

 

 

Join 함수

: String List를 합쳐 하나의 String으로 바꿀 때에 사용한다.

colors = ['red', 'blue', 'yellow', 'green']

result = "".join(colors)
print(result)

result = ' '.join(colors)
print(result)

result = ', '.join(colors)
print(result)

result = '-'.join(colors)
print(result)
redblueyellowgreen
red blue yellow green
red, blue, yellow, green
red-blue-yellow-green

 

 

 

 

반응형

+ Recent posts