파이썬 문법 시리즈
어썸한 문법 제보 받습니다.
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
복사