코딩하는 타코야끼

[스터디 노트] Week3_3일차 [unit1 ~ 22] - 자료구조 본문

zero-base 데이터 취업 스쿨/스터디 노트

[스터디 노트] Week3_3일차 [unit1 ~ 22] - 자료구조

가스오부시 2023. 7. 23. 01:54
728x90
반응형

1. 자료구조_1 ~ 3 [unit 01 ~ 13]


📍 자료구조

  • 여러 개의 데이터가 묶여있는 자료형을 컨테이너 자료형이라고 하고 이러한 컨테이너 자료형의 데이터 구조를 자료구조라고 한다.
  • 자료구조는 각각의 컨테이너 자료형에 따라서 차이가 있으며, 파이썬의 대표적인 컨테이너 자료형으로는 리스트(List), 튜플(Tuple), 딕셔너리(Dic), 셋트(Set)가 있다

📍 리스트(List)

  • 배열과 같이 여러 개의 데이터를 나열한 자료구조
  • [ ]’를 이용해서 선언하고, 데이터 구분은 ‘ , ’를 이용한다.
    • 숫자, 문자(열), 논리형 등 모든 기본데이터를 같이 저장할 수 있다.
    • 리스트에 또 다른 컨테이너 자료형 데이터를 저장할 수도 있다.

📍 인덱스

  • 인덱스란, 아이템에 자동으로 부여되는 번호표
  • 리스트 아이템은 인덱스를 이용해서 조회 가능하다
num_l = [1, 2, 3, 4]

print(num_l[0])
print(num_l[1])
print(num_l[2])
print(num_l[3])
print("="*20)
for i in range(4):
    print(num_l[i])
>>>
1
2
3
4
====================
1
2
3
4

📍 len( )

  • 리스트 길이란, 리스트에 저장된 아이템 개수를 뜻한다.
  • 파이썬의 내장 함수로, 문자열, 리스트, 튜플, 딕셔너리 등 여러 가지 데이터 타입의 길이(항목의 개수)를 반환합니다.
s = "안녕하세요"
print(len(s))
>>>
5
list = [1, 2, 3, 4, 5]
print(len(list))
>>>
5
dict = {"name": "John", "age": 30, "city": "New York"}
print(len(dict))
>>>
3

📍 리스트와 for문

  • for문을 이용하면 리스트의 아이템을 자동으로 참조할 수 있다.
min_score = 60
scores = [
    ["국어", 58],
    ["영어", 77],
    ["수학", 89],
    ["과학", 99],
    ["국사", 50],
]
for item in scores:
    if item[1] < min_score:
        print(f"과락 과목: {item[0]}, 점수: {item[1]}")
>>>
과락 과목: 국어, 점수: 58
과락 과목: 국사, 점수: 50

📍 리스트와 while문

  • while문을 이용하면 다양한 방법으로 아이템 조회가 가능하다.
cars = ["그랜저", "소나타", "말리부", "카니발", "쏘렌토"]

n = 0
while True:
    print(cars[n])
    n += 1
    
    if n == len(cars):
        break
>>>
그랜저
소나타
말리부
카니발
쏘렌토

📍 enumerate( )함수

  • enumerate( ) 함수를 이용하면 아이템을 열거할 수 있다
sports = ["농구", "수구", "축구", "마라톤", "테니스"]

for idx, value in enumerate(sports):
    print(f"{idx} : {value}")
>>>
0 : 농구
1 : 수구
2 : 축구
3 : 마라톤
4 : 테니스
sports = ["농구", "수구", "축구", "마라톤", "테니스"]
user = str(input("가장 좋아하는 스포츠 입력: "))

for idx, value in enumerate(sports):
    if value == user:
        print(f"{user}(은)는 {idx+1} 번째에 있습니다.")
>>>
가장 좋아하는 스포츠 입력: 마라톤
마라톤(은)는 4 번째에 있습니다.

📍 append( )

  • 리스트에 아이템 추가
  • append( ) 함수를 이용하면 마지막 인덱스에 아이템을 추가할 수 있다.


📍 insert( )

  • 리스트의 특정 위치에 아이템 추가.
  • insert( ) 함수를 이용하면 특정 위치(인덱스)에 아이템을 추가할 수 있다.


📍 pop( )

  • 리스트의 아이템 삭제.
  • pop( ) 함수를 이용하면 마지막 인덱스에 해당하는 아이템을 삭제할 수 있다.
  • pop( )함수를 인덱스에 해당하는 아이템을 삭제할 수 있다.


📍 remove( )

  • remove( ) 함수를 이용하면 특정 아이템을 삭제할 수 있다.
  • remove( )는 한 개의 아이템만 삭제 가능하다. 만약 삭제하려는 데이터가 2개 이상이라면 while문을 이용하자.


📍 extend( )

  • extend() 함수를 이용하면 리스트에 또 다른 리스트를 연결(확장)할 수 있다.
  • " + " 덧셈 연산자를 이용해서 리스트를 연결할 수도 있다.
# 나와 친구가 좋아는 번호를 합치되 번호가 중복되지 않게 하는 프로그램을 만들자.
my_number = [1, 3, 4, 6, 7]
friend_number = [2, 3, 5, 8, 10]

print(f"my_num: {my_number}")
print(f"friend num: {friend_number}")

add_list = my_number + friend_number
print(f"add list: {add_list}")

result = []

for num in add_list:
    if num not in result:
        result.append(num)
print(f"result: {result}")
>>>
my_num: [1, 3, 4, 6, 7]
friend num: [2, 3, 5, 8, 10]
add list: [1, 3, 4, 6, 7, 2, 3, 5, 8, 10]
result: [1, 3, 4, 6, 7, 2, 5, 8, 10]

2. 자료구조_4 [unit 14 ~ 17]


📍 sort( )

  • sort( ) 함수를 이용하면 아이템을 정렬할 수 있다.


📍 reverse( )

  • reverse() 함수를 이용하면 아이템을 순서를 뒤집을 수 있다.


📍 리스트 슬라이싱

  • [n:m]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있다.
  • [n:m]을 이용하면 문자열도 슬라이싱이 가능하다.
  • 슬라이싱을 이용해서 아이템을 변경할 수 있다.
  • slice( )함수를 이용해서 아이템을 슬라이싱할 수 있다.


3. 자료구조_5 ~ 6 [unit 18 ~ 22]


📍 리스트 곱셈 연산

  • 리스트를 곱셈 연산하면 아이템이 반복된다.


📍 index( )

  • index(value) 함수를 value의 인덱스를 알아낼 수 있다.

📍 count( )

  • count(value) 함수를 이용하면 특정 아이템의 개수를 알아낼 수 있다.

📍 del

  • del 키워드를 이용하면 특정 아이템을 삭제할 수 있다.


📍 in과 not in 키워드

  • in, not in 키워드를 이용하면 아이템의 존재 유/무를 알 수 있다.
  • in, not in 키워드는 문자열에서도 사용 가능하다.
import random

sample_list = random.sample(range(1, 11), 5)
user = int(input("숫자 입력(환율 50%): "))

if user in sample_list:
    print("빙공!!")
    
else:
    print("다음 기회에~~")

print(f"random_number: {sample_list}")
print(f"user_number: {user}")
>>>
숫자 입력(환율 50%): 5
빙공!!
random_number: [2, 8, 5, 10, 3]
user_number: 5

⚡️ sort( ), sorted( )

  • sort( ) 함수는 리스트를 "제자리"에서 정렬합니다. 즉, 새로운 리스트를 반환하지 않고 원래 리스트를 수정합니다
  • 그래서 **sort( )**의 결과를 sort_list에 할당하면 None이 됩니다.
number = [4, 6, 1,  7, 3]

print(number)
sort_list = number.sort()
print(sort_list)
>>>
[4, 6, 1, 7, 3]
None
  • 리스트를 정렬하고 출력하려면, 먼저 sort( )를 호출하고 그 후에 리스트를 출력해야 합니다
number = [4, 6, 1,  7, 3]

print(number)
number.sort()
print(number)
>>>
[4, 6, 1, 7, 3]
[1, 3, 4, 6, 7]
  • 원래의 리스트를 정렬하지 않고 새로운 정렬된 리스트를 만들고 싶다면 sorted( ) 함수를 사용해야 합니다.
  • 이 경우 sorted( )는 원래 리스트를 수정하지 않고 원래 리스트의 정렬된 버전을 새 리스트로 반환합니다.
number = [4, 6, 1,  7, 3]

print(number)
sort_list = sorted(number)
print(sort_list)
>>>
[4, 6, 1, 7, 3]
[1, 3, 4, 6, 7]
  • sorted( )는 리스트 자료형으로 반환한다.
  • sorted( )함수를 이용하면 튜플도 정렬할 수 있다.
number = 2, 4, 3, 1, 5
print(number)
print(type(number))

list_number = sorted(number)
print(list_number)
print(type(list_number))
>>>
(2, 4, 3, 1, 5)
<class 'tuple'>
[1, 2, 3, 4, 5]
<class 'list'>
반응형