TIL

[TIL] 2025.01.06(월) - python 학습

요호유후 2025. 1. 12. 23:46
반응형

금일 학습내용

1. 함수

2. 시퀀스 자료형

  2-1. list

  2-2. tuple

  2-3. dict

  2-4. set

 

 

각 학습별 상세내용

1. 함수

 

 ▪︎ 함수

     - 단독 모듈이라 그냥 호출하여 사용이 가능 하다.

     - 예) print(), int(), input(), ...

 ▪︎ 메서드

     - 함수의 클래스 안에 속해 있고 클래스의 멤버 션수들을 이용해서 구현된 것이다.

     - 단독으로 사용할 수 없다.

     - 예) text.count("a"), text.index("a"), ...


 

input() 함수 

▶ input() 결과는 문자열(string, str) 이다.

  - 숫자를 넣어도 type() 으로 확인해 보면 str으로 출력된다. 

  - 입력 받은 후 문자열 이외의 값으로 처리할 때는 꼭 형변환 해주어야한다!!

 

변수 2개 이상 입력받을 수 있다.

  예) num1, num2 = input(), input()

  예) num3, num4 = input().split()

 

map() 함수

 요소들을 매핑해준다.

  예) num1, num2 = map(int, input().split(",")

    → input함수의 출력물들을 int로 형변환해서 각 변수에 할당해준다.

 

 * 용어 * 
     - 래거시코드 : 누군가 남겨두고간 코드
     - 리팩토링 : 결과의 변경 없이 코드의 구조를 재조정하는 것

 

print() 함수

 sep 옵션

  - 요소 사이 사이 문자를 추가한다.

  예) print("a", "b", "c", "d", sep="/")

    → 출력 : a/b/c/d

 

 end 옵션

  - 출력 마지막에 적용한다.

  예) print("a", "b", "c", "d", end="::::")

    → 출력 : abcd::::

 

 

2. 시퀀스 자료형

 

자료형 list tuple dict set
기호 [] () {} {}

 

list (리스트)

 선언 방법

리스트 = list()
리스트 = []   # 값 없이 할당 가능
리스트 = [23, "리스트", 3.14, True, False]  # 여러 자료형의 값을 할당 할 수 있음

 

 with. range() 함수

  - range() : 연속된 숫자를 생성하는 기능

  - range(시작, 끝, 간격)

  예) list(range(0, 5)) → [0, 1, 2, 3, 4] == list(range(5))

  예) list(range(0, 20, 2) → [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

  예) list(range(20, 0, -1) → [20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

 

* 용어 *
     - 리스트의 패킹/언패킹이란?
dir() 함수
  - 함수의 메서드들을 확인할 수 있다.
  예) dir(list), dir(int), ...

 

tuple (튜플)

 list와 tuple의 차이

  - list는 요소의 추가, 삭제, 변경이 가능하지만, tuple은 요소의 추가, 삭제, 변경이 불가하다.

 

dict (딕셔너리)

 list, tuple, string과의 차이

  - list, tuple, string은 나열된 데이터간 관계성이 없지만, dict는 상관성이 있다.

  - 데이터가 {key : value} 와 같이 키-값의 쌍으로 이루어져있다.

  - 인덱싱은 안 되지만, key값으로 해당 value값을 구할 수 있다.

  - values의 중복은 가능하나, key의 중복은 허락되지 않는다.

    → key값이 중복될 경우, 제일 마지막에 있는 key의 value값만을 출력한다.

  예) people = {"힘" : 30, "지능" : 40}

 

 이외 특징

  - 데이터의 추가, 삭제, 변경이 가능하다.

· 삭제
del 딕셔너리["a"] → key "a"의 값이 삭제된다. (이때, value 값도 같이 삭제된다.)

· 변
딕셔너리["a"] = 100 → key "a"의 values를 100으로 변경한다.

· 추가
딕셔너리.update({"b" : 50, "c" : 100})

 

 with. zip() 함수

  - 병렬처리를 해준다.

  - 배열의 개수는 꼭 맞춰주어야한다. (최소 개수에 맞게 잘림)

  예) 딕셔너리 = dict(zip(["힘", "지능", "체력"], [30, 20, 60]))

     → {"힘" : 30, "지능" : 20, "체력" : 60}

 

▶메서드들

  - 딕셔너리.keys() : key 값을 반환한다.

  - 딕셔너리.values() : value 값을 반환한다.

  - 딕셔너리.items() : 각 key-value 값을 반환한다.

 

set (셑)

요소의 순서가 없다.

  - = 인덱스가 없다.

     → 그래서 출력하면 매번 요소의 위치가 바뀐다.

  - 중복된 값을 넣을 수 없다.

set과 list/tuple 비교

사과_리스트 = list("apple") → 출력 : ['a', 'p', 'p', 'l', 'e']
사과_튜플 = tuple("apple") → 출력 : ('a', 'p', 'p', 'l', 'e')
사과_셑 = set("apple") → 출력 : {'a', 'p', 'l', 'e'} // 출력값은 달라질 수 있다.

 

 데이터 추가

  - add(), update()로 데이터 추가가 가능하다.

  - 단, add()는 단어 통째로 추가되는데 update()는 단어 한글자씩 요소로 추가된다.

  예) add("깻잎") → 출력 : {"상추", "깻잎"}

  예) update("깻잎") → 출력 : {"상추", "깻", "잎"}

 

 데이터 삭제

  - remove(), discard()로 데이터 삭제가 가능하다.

  - 단, remove()는 존재 하지 않는 데이터를 삭제할 경우 에러를 발생시키고

     discard()의 경우 에러를 발생시키지 않는다.

  예) remove("양배추") → 에러발생

  예) discard("양배추") → 에러발생하지 않음

  - pop()은 임의의 데이터를 삭제하고 삭제된 데이터를 반환한다.

  - remove()와 discard()는 반환하지 않기에 출력을 추가로 해주어야한다.

 

 set의 활용

  - 집합, 합집합, 교집합, 차집합 등 활용할 수 있다.

예시)
채소1 = {"당근", "양파", "오이", "배추"}
채소2 = {"양파", "오이", "대파", "가지"}

합집합(union, |) *중복되는 요소는 삭제함
set.union(채소1, 채소2) → 출력 : {"당근", "양파", "오이", "배추", "대파", "가지"}

교집합(intersection, &)
set.intersection(채소1, 채소2) → 출력 : {"양파", "오이"}

차집합(difference, -)
set.difference(채소1, 채소2) → 출력 : {"배추", "당근"}

 

 

 

시퀀스 자료형 중 그나마 dict형은 구분하기 쉽다. 나머지 자료형들은 아직 그 특징들이 헷갈린다...

특히, 데이터 추가, 삭제, 변경의 방법이 항상 헷갈려서 사용할때 10에 8 정도는 에러를 발생시킨다.

구글링이 일상이다 흑ㅠㅠ

좀 더 많이 보고 많이 사용하고 해야겠다. 언젠간 구글링 없이 사용할 날이 오겠지.

반응형