Search
Duplicate
🐍

문제풀이용 파이썬 문법 - 2

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Problem Solving
Python
Scrap
태그
python
9 more properties

파이썬 문법 시리즈

어썸한 문법 제보 받습니다.

1. * 연산자

1-1. 함수 인자 전달

def add(a, b, c): return a + b * c nums = [1, 2, 3] result = add(*numbers) print(result) # output: 7
Python
복사

1-2. 리스트, 튜플 병합

arr1 = [1, 2, 3] arr2 = [4, 5, 6] arr = [*arr1, *arr2] print(arr) # output: [1, 2, 3, 4, 5, 6] tup1 = (1, 2, 3) tup2 = (4, 5, 6) tup = (*tup1, *tup2) print(tup) # 출력: (1, 2, 3, 4, 5, 6)
Python
복사

2. ** 연산자

2-1. 딕셔너리 unpacking

딕셔너리의 키-값 쌍을 각 키워드의 인수로 변환
def print_info(name, age, city): print(f"Name: {name}") print(f"Age: {age}") print(f"City: {city}") person = {"name": "John", "age": 30, "city": "New York"} print_info(**person) # output # Name: John # Age: 30 # City: New York
Python
복사

2-2. 딕셔너리 병합

x = {'Alice' : 18} y = {'Bob' : 27, 'Ann' : 22} z = {**x,**y} # {'Alice': 18, 'Bob': 27, 'Ann': 22} # python 3.9부터는 다음 방식도 가능 z = x | y
Python
복사

3. 2차원 리스트를 1차원으로 변환하기

3-1. 이중 for문 사용

origin_lst = [[1, 2], [3, 4], [5, 6]] flatten_lst = [] for sub_lst in origin_lst: for item in sub_lst: flatten_lst.append(item) print(flatten_lst) # output: [1, 2, 3, 4, 5, 6]
Python
복사

3-2. 리스트 컴프리헨션 사용

origin_lst = [[1, 2], [3, 4], [5, 6]] flatten_lst = [item for sub_lst in origin_lst for item in sub_lst] print(flatten_lst) # output: [1, 2, 3, 4, 5, 6]
Python
복사

3-3. chain 함수 사용

여러 개의 iterable 객체를 인자로 받아 하나의 iterable 객체로 만들어줌
from itertools import chain origin_lst = [[1, 2], [3, 4], [5, 6]] flatten_lst = list(chain(*origin_lst)) print(flatten_lst) # output: [1, 2, 3, 4, 5, 6]
Python
복사

4. zip

여러 iterable 객체를 입력받아, 각 iterable의 동일한 인덱스에 있는 요소끼리 짝지어 tuple로 만들음
생성된 tuple들은 iterator로 반환

4-1. 여러 개의 list를 짝지어 출력

names = ["Alice", "Bob", "Charlie"] ages = [28, 25, 32] for name, age in zip(names, ages): print(f"{name} is {age} years old.") # output # Alice is 28 years old. # Bob is 25 years old. # Charlie is 32 years old.
Python
복사

4-2. 두 리스트를 딕셔너리로 병합

keys = ["name", "age", "city"] values = ["John", 30, "New York"] merged_dict = dict(zip(keys, values)) print(merged_dict) # output: {'name': 'John', 'age': 30, 'city': 'New York'}
Python
복사

4-3. 두 리스트의 요소 비교

list1 = [1, 2, 3, 4, 5] list2 = [5, 4, 3, 2, 1] comparison = [a == b for a, b in zip(list1, list2)] print(comparison) # output: [False, False, True, False, False]
Python
복사

5. for-else, while-else문

else 부분은 반복문이 정상적으로 종료될 때(=break에 의해 종료되지 않았을 때) 실행됨
탐색, 검사에 유용 + break 문이 실행되지 않은 경우에 추가 작업을 해야할 경우 사용됨

5-1. for-else문

fruits = ["apple", "banana", "grape"] for fruit in fruits: if fruit == "pineapple": print("Found pineapple!") break else: print("Pineapple not found.") # output # Pineapple not found.
Python
복사

5-2. while-else문

n = 10 while n > 0: n -= 1 if n == 5: print("Break at 5") break else: print("Loop finished.") # output # Break at 5
Python
복사

6. 리스트 조작

6-1. 리스트 컴프리헨션 (List Comprehension)

squares = [x ** 2 for x in range(1, 6)] print(squares) # output: [1, 4, 9, 16, 25]
Python
복사

6-2. 조건부 리스트 컴프리헨션(Conditional List Comprehension)

even_numbers = [x for x in range(1, 11) if x % 2 == 0] print(even_numbers) # output: [2, 4, 6, 8, 10]
Python
복사

6-3. 리스트 뒤집기

fruits = ["apple", "banana", "grape"] for fruit in reversed(fruits): print(fruit) # output # grape # banana # apple
Python
복사

6-4. any(), all()

any(): 리스트의 요소 중 하나라도 조건을 만족하면 True 반환
numbers = [1, 3, 5, 8, 10] result = any(x % 2 == 0 for x in numbers) print(result) # output: True
Python
복사
all(): 리스트의 모든 요소가 조건을 만족하면 True 반환
numbers = [1, 3, 5, 7, 9] result = all(x % 2 != 0 for x in numbers) print(result) # output: True
Python
복사

6-5. n차원 리스트 뒤집기

lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(lst[::-1]) # [[7, 8, 9], # [4, 5, 6], # [1, 2, 3]]
Python
복사

6-6. n중 리스트 회전

def rotate(arr): return list(zip(*arr[::-1])) print(rotate([[1, 2, 3], [4, 5, 6], [7, 8, 9]])) # [(7, 4, 1), # (8, 5, 2), # (9, 6, 3)]
Python
복사