개발기초

파이썬 기초문법 뽀개기 : 리스트와 딕셔너리

Veams 2022. 11. 21.

파이썬 이론을 빠르게 습득하고 강의수강.

문법을 외우는 것이 아니라, 실습하며 퀴즈로 숙달하게 만드는데 목적으로 강의를 수강함.

 

파이썬을 설치했다는 것은, 번역팩을 설치한다고 생각하면 된다.

컴퓨터는 101010011 같은 얼어만 알아듣기 때문에 파이썬 문법으로 된 것을 101010011로 변환해줄 수 있도록, 번역 패키지를 설치하는 것

 

변수. 

변수는 값을 담는 박스이다.

컴퓨터 입장에서는 값이 담긴 위치를 가리킨다.

즉 컴퓨터가 기억하고 있는 메모리 공간을 가리킨다.

 

문자열 기초와 연산

 

매써드

str() 문자열로 선언할 수 있다.

lent() 문자열 길이를 구할 수 있다.

split()  인덱싱과 슬라이스

 

리스트와 딕셔너리

 

스파르타코딩클럽 이범규 강사님의 파이썬 문법 기초 강의 참고

 

리스트 : 값을 가져오는 것과 넣는 것을 아는 것이 이번 학습의 핵심이다 

 

@ sort()

a_list = [1,5,6,3,2]

a_list.sort(reverse=True)
# 내림차순으로 정렬

print(a_list)

실행 결과

==> [1, 2, 3, 5, 6]

 

 

딕셔너리  : 값을 가져오는 것과 넣는 것을 아는 것이 이번 학습의 핵심이다 

리스트와 달리, 딕셔너리에는 순서가 따로 없다.

 

a_dict = {'name' : 'bob', 'age' : 27}

               {key : value, key : value}

 

 

@ 리스트와 딕셔너리가 조합될 수 있다.

a_dict = {'name':'bob', 'age':27, 'friend':['영희', '철수']}

result = a_dict['friend'][1]

print(result)

실행 결과 

==> 철수

 

 

@ a_dict 딕셔너리에 value가 180인 'height' 키를 추가한다.

a_dict = {'name':'bob', 'age':27, 'friend':['영희', '철수']}

a_dict['height'] = 180

print(a_dict)

실행 결과

==> {'name': 'bob', 'age': 27, 'friend': ['영희', '철수'], 'height': 180}

 

@딕셔너리 안에 'height'가 있는지 찾는다.

a_dict = {'name':'bob', 'age':27, 'friend':['영희', '철수']}

result = ('height' in a_dict)

print('height' in a_dict)

실행결과

==> False

 

@ a_dict 딕셔너리에 value가 180인 'height' 키를 추가하고, 딕셔너리 안에 'height'가 있는지 찾는다.

a_dict = {'name':'bob', 'age':27, 'friend':['영희', '철수']}

a_dict['height'] = 180

result = ('height' in a_dict)

print('height' in a_dict)

실행결과

==> True

 

 

리스트와 딕셔너리의 조합 : 전체 리스트에 하나하나의 요소가 딕셔너리로 들어가 있다. 

@리스트 안에 딕셔너리가 순차적으로 들어가 있다

people = [
             {'name':'bob', 'age': 27},
             {'name':'john', 'age':30}
]
print(people)

실행결과

==> [{'name': 'bob', 'age': 27}, {'name': 'john', 'age': 30}]

 

 

@또한 리스트 안에 딕셔너리가 뜰어가 있을 때, 그러한 값을 찾아 쓸 수 있다.

people = [
             {'name':'bob', 'age': 27},
             {'name':'john', 'age':30}
]
print(people[1]['age'])

실행결과

==> 30

 

@ people 리스트에서 name이 smith인 사람의 과학점수를 찾아보자.

people = [
    {'name': 'bob', 'age': 20, 'score':{'math':90,'science':70}},
    {'name': 'carry', 'age': 38, 'score':{'math':40,'science':72}},
    {'name': 'smith', 'age': 28, 'score':{'math':80,'science':90}},
    {'name': 'john', 'age': 34, 'score':{'math':75,'science':100}}
]

print(people[2]['score']['science'])

실행결과

==> 90

 

 

조건문

 

 

주의할 점

: 콜론을 사용하고나면, 들여쓰기를 해야한다.

만약 :(콜론) 사용 이후, 들여쓰기를 하지 않으면, 해당 조건문에 포함되는 문장이 아니다.

money = 3000

if money > 3800:
    print('택시를 타자!')
else:
    print('택시를 못타~')
    print('그럼 뭘타지?')

실행결과 

==>

택시를 못타~

그럼 뭘타지?

 

money = 3000

if money > 3800:
    print('택시를 타자!')
else:
    print('택시를 못타~')
print('그럼 뭘타지?')

실행결과

==>

택시를 못타~

그럼 뭘타지?

 

이번에도 실행결과가 동일해보이지만,

사실 맨 아래 print('그럼 뭘타지?')는 조건문의 값에 영향을 받지 않고 출력된다.

 즉, : 콜론 사용 후, 들여쓰기 여부가 중요하다.

 

elif 의 사용. 조건문 안에 여러개를 쓸 수 있다.

money = 1100

if money > 3800:
    print('택시를 타자!')

elif money > 1000:
    print('자전거를 빌리자!')
    
elif money > 1300:
    print('버스를 타자!')

else:
    print('걸어가자')

실행결과

==> 자전거를 빌리자!

 

반복문

- 반복문을 사용하면, 반복적인 입력 줄일 수 있다?!

리스트안에 있는 요소들을 하나씩 꺼내서 써먹는다.

fruits = ['사과', '배', '감', '수박', '딸기']

for fruit in fruits:
    print(fruit)

실행결과 ==> 

사과


수박
딸기

 

전형적인 활용 사례

- 리스트 people 안에 딕셔너가 들어가있고, for문이 돌아가면서 조건에 맞는 것들만 출력하게 만들었다.

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for person in people:
    name = person['name']
    age = person['age']
    if age > 20:
        print(name, age)

실행결과 ==>

carry 38
ben 27
bobby 57
red 32
queen 25

 

@ 반복문에서 enumerate() 와 break의 활용

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for i, person in enumerate(people):
    name = person['name']
    age = person['age']
    print(i, name, age)
    if i > 3:
        break

실행결과==>

0 bob 20
1 carry 38
2 john 7
3 smith 17
4 ben 27

 

-  i가 4일 때의 출력을 완료하고, 반복문을 멈추었다.

 

왜 enumerate()를 활용할까?

만약 리스트 people이 1만 줄이라고 하자,

코딩을 막 시작한 상황에서, 해당 코드가 실행이 되는지 여부를 확인하고자 할 때

1만줄씩 실행을 모두 해서 출력을 해야한다면 시간이 항상 많이 걸리기에 비효율적일 것이다.

이때 enumerate 와 break를 활용하면,

굳이 1만줄씩 출력해보지 않아도 짧게 출력하는 상태에서

내가 원하는 코딩을 디버깅할 수 있을 것이다.

 

@ 반복문 - 연습문제1

리스트안에 있는 짝수의 갯수 구하기.

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

x= 0
for i in num_list:
    if i % 2 == 0 :
        x += 1

print(x)

실행결과 ==>

7

 

@ 반복문 - 연습문제2

리스안에 있는 모든 숫자 더하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

sum = 0
for num in num_list:
    sum = sum + num

print(sum)

실행결과 ==>

38

 

@ 반복문 - 연습문제3

리스트안에서 최대값을 구하라.

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 80, 2, 4]

max = 0
for num in num_list:
    if max < num :
        max = num
print(max)

max 초기값을 0으로 선언하고

반복문이 계속 돌아가며, max 값 보다 num 값이 클 경우, max는 num값을 저장한다.

그리고 출력한다.

 

@함수

예시1

def hello():
    print('안녕!')
    print('좋은 날씨야')


hello()

실행결과 ==>

안녕!

좋은 날씨

 

예시2

def sum(a,b):
    print('더하기를 하셨네요!')
    return a+b

result = sum(1,2)
print(result)

실행결과 ==>

더하기를 하셨네요!

3

 

@함수 연습문제1

주민등록번호를 모두 입력하면, 여자 혹은 남자인지 판별하여 출력하는 함수 만들어보기

def check_gender(a):
    b = int(a.split('-')[1][:1])
    if b % 2 == 0 :
        print('여자')
    else :
        print('남자')

check_gender('951301-1012345')
check_gender('851331-2012345')
check_gender('621311-4012345')

실행결과==>

남자

여자

댓글