본문 바로가기
IT

파이썬 함수, 리스트, 딕셔너리

by Dyudyu_Data 2026. 4. 10.
반응형

🤨 함수의 기본 구조

함수는 코드의 집합입니다.

def 함수 이름(매개변수):
    수행할 문장1
    수행할 문장2
    ...

def add(a, b):    # a, b는 매개변수
    return a + b

add(1, 2)  # 1, 2는 인수
  • 매개변수 : 함수에 입력된 전달된 값을 받는 변수
  • 인수 : 함수를 호출할 때 전달하는 입력값

인수의 형식

  • 위치 인수(positional argument) : 함수에 넣는 인수의 위치가 정해져 있는 방식입니다. 인수가 여러 개인 리스트 앞에 *를 붙이면 언패킹(unpacking)이 되어서 말 그대로 리스트나 튜플의 포장을 푼다는 뜻입니다. 단, 매개 변수의 개수와 리스트의 요소 개수가 같아야 합니다.
  • 위치 가변 인수 : 가변 인수 (variable argument)임의 개수의 인수를 받을 수 있습니다. 매개변수 앞에 * 기호를 붙이면 됩니다. 매개변수명은 원하는 이름으로 정해도 되지만 보통 인수를 뜻하는 args를 사용합니다.
def 함수명(*매개변수):
    코드
  • 키워드 인수 : 키워드와 함께 인수를 넣으면, 순서와 상관없이 키워드에 맞게 인수가 입력됩니다.
  • 키워드 가변 인수 : 키워드 인수를 사용하면서 동시에 가변 인수 함수를 만들 수 있습니다. 함수를 만드는 방법은 가변 인수 함수를 만드는 것과 동일하며 매개변수명(원하는 것도 가능)에 보통 키워드 인수라는 의미의 kwargs를 사용합니다.
def 함수명(**매개변수):
    코드

def cat_info(**kwargs):
    for kword, arg in kwargs.items():  # 딕셔너리 쌍을 얻는 items() 함수
        print(kword, ':', arg)

cat_info(name='고양이')

🙂 리스트 함수

  • min(), max() : 말 그대로 리스트에서 최댓값과 최솟값을 구하는 함수

아스키코드

문자열만 있을 때 min(), max() 이 함수들을 사용하면 최솟값과 최댓값이 오류가 나지 않고 출력이 됩니다. 문자열을 비교하는 기준인 아스키코드(ASCII)가 있기 때문입니다.

아스키코드 ➔ 문자열로 변화하는 함수는 chr()이고, 문자열 ➔ 아스키코드로 변환하는 함수는 ord()입니다. 아스키코드는 소문자, 대문자, 자음, 자음+모음을 모두 구분합니다.

  • enumerate() : 파이썬만의 독특한 함수로 리스트의 원소에 순서값을 부여하는 함수이며 for문과 함께 쓰일 수 있습니다.
  • zip() : 여러 개의 순회 가능한(iterable) 객체를 인자로 받고, 각 객체가 담고 있는 원소를 순차적으로 접근할 수 있는 반복자(iterator)를 반환하는 함수
  • .append() : 리스트의 맨 마지막에 요소를 추가하는 함수
  • .sort() : 리스트의 요소를 순서대로 정렬해 주는 함수

🙃 딕셔너리 함수

key-value 추가하기

  • setdefault() : 이미 해당 key가 있을 때는 그 key의 value를 반환하고 key가 없을 때는 딕셔너리에 key:value를 저장하고 value를 반환
딕셔너리.setdefault(key, value)
  • update() : 특정 key-value 조합을 삽입하고 이미 존재하는 key에 value값 수정이 가능
딕셔너리.update(iterable)

key-value 삭제하기

  • pop() : 리스트에서 마지막 요소를 출력하고 그 이후에 해당 마지막 요소를 삭제, 딕셔너리에서 pop() 은 key를 필수로 넣어주어야 하기 때문에 리스트에서 사용하는 것과 차이가 있음
  • popitem() : 리스트에서 pop()처럼 딕셔너리에서 특정 key를 지정하지 않아도 마지막 value만 출력

딕셔너리 생성

  • fromkeys() : 리스트나 튜플을 넣으면 자동으로 딕셔너리를 만들 수 있는 함수, key는 해당 리스트가 들어가고 value는 None이 자동으로 들어감
dict.fromkeys(리스트 또는 튜플)
dict.fromkeys(리스트 또는 튜플, 'age') # value를 넣어주려면 key 넣고 순서대로 추가 가능

😲 컴프리헨션

리스트 컴프리헨션

# 반복문
list_for = []
for i in range(0, 11, 2):
    list_for.append(i)

print(list_for)

# 리스트 컴프리헨션
[x for x in range(0, 11, 2)]

# 반복문 + 조건문
# 반복문 컴프리헨션 뒤에 바로 이어서 조건문 추가 가능
[x for x in range(0, 11, 2) "조건문"]

중복 표현과 컴프리헨션

# for문 중복
a = [1, 2, 3]
b = [a, b, c]

[[x, y] for x in a for y in b]

# if문 중복
# 2와 3의 공배수
[x for x in range(1, 30) if x % 2 == 0 if x % 3 == 0]

셋 컴프리헨션

셋(set) 컴프리헨션은 리스트를 만들 때 쓰는 대괄호 [ ] 대신에 중괄호 { }를 씁니다.

# 셋 컴프리헨션
{x for x in range(0, 11, 2)}

딕셔너리 컴프리헨션

중괄호를 이용하면서 동시에 key:value의 형태로 내용 넣으면 딕셔너리를 만들 수 있습니다.

friend_num = [5, 13, 4, 21]
friend_name = ['hj', 'hg', 'dy', 'sj'] 
{k:v for k, v in zip(friend_num, friend_name)} # zip() 함수를 활용하여 키와 밸류를 지정

{k:v for k, v in zip(friend_num, friend_name) if k < 10} # if문도 함께 쓸 수 있음

f-string

문자열을 시작하는 따옴표 바로 앞에 f를 붙이고 값을 넣고 싶은 곳에 {} 구멍을 뚫고, 그 안에 변수 이름을 바로 넣어주면 됩니다. .format()처럼 뒤에 변수를 또 써줄 필요가 없습니다.

그리고 중괄호{}안에서 간단한 연산도 가능하다는 큰 장점이 있습니다.

또 한 가지 중괄호 안에 변수이름= 처럼 등호(=)를 붙여주면 print문을 간결하게 쓸 수 있습니다.

my_number1 = 10

print(f"my_number1 = {my_number1}")

# f를 활용하면!
print(f"{my_number1 = }")

#값은 값이 나오는걸 알 수 있음
my_number1 = 10

🚨 오늘의 이슈

  • enumerate() 사용
python_score = [50, 85, 93, 79]

for i, score in enumerate(python_score):
    if score >= 80:
        grade = "A"
    elif score >= 60:
        grade = "B"
    else:
        grade = "C"

    print(f"{i+1}번은 {score}점으로 {grade} 등급 입니다.") 

해당 마지막 print 줄에서 {i+1} 이렇게 +1을 해서 1번은 이라고 할 수 있지만,

for i, score in enumerate(python_score, start=1):
    if score >= 80:
        grade = "A"
    elif score >= 60:
        grade = "B"
    else:
        grade = "C"

    print(f"{i}번은 {score}점으로 {grade} 등급 입니다.")

enumerate(python_score**, start=1**) 해당 부분 , start=1을 추가하면 마지막 줄에서 +1을 추가하지 않아도 1번부터 나온다는 사실을 알게 되었다. 흥미진진😃