분류 전체보기 389

리스트 내포로 2차원 리스트 만들기

리스트 내포로 2차원 리스트 만들기― 파이썬에서 행렬을 한 줄로 만들자!리스트 내포(List Comprehension)는 파이썬에서 데이터를 손쉽게 가공할 수 있는 대표적인 문법입니다.이번에는 이를 활용해 2차원 리스트(행렬 형태)를 만드는 실용적인 예제를 소개합니다.✅ 목표[[10, 11, 12], [13, 14, 15], [16, 17, 18]]숫자는 행마다 3씩 증가하고 있으며, 각 행은 3개의 숫자를 가집니다.✅ 코드 한 줄로 만들기[[row + (i * 3) for row in [10, 11, 12]] for i in [0, 1, 2]]출력:[[10, 11, 12], [13, 14, 15], [16, 17, 18]]📌 코드 해설row + (i * 3) → i값에 따라 각 행이 3씩 증가for ..

파이썬 리스트 내포에서 if 조건문 쓰는 법

파이썬 리스트 내포에서 if 조건문 쓰는 법― 깔끔한 필터링의 기술리스트 내포(List Comprehension)는 파이썬의 매력적인 문법 중 하나입니다.그 자체로도 간결하지만, 여기에 if 조건문이 더해지면 매우 강력한 필터링 도구로 변신합니다.이번 글에서는 리스트 내포에서 if 조건문을 사용하는 기본 구조와 다양한 예제를 소개합니다.1. 기본 구조[표현식 for 변수 in 반복가능한객체 if 조건식]2. 예제 1: 짝수만 뽑기nums = [1, 2, 3, 4, 5, 6]even_nums = [n for n in nums if n % 2 == 0]출력: [2, 4, 6]3. 예제 2: 문자열 길이 조건words = ['a', 'abc', 'go', 'python']long_words = [w for w..

파이썬 리스트 내포 오류 쉽게 이해하기

괄호 하나의 차이, 왜 그렇게 중요한가요?― 파이썬 리스트 내포 오류 쉽게 이해하기파이썬 초보자에게 가장 많이 발생하는 실수 중 하나는 리스트 내포(List Comprehension)를 사용할 때 괄호를 빼먹는 것입니다.특히 (x, y)처럼 값을 묶어야 할 자리에 x, y라고만 쓰면 다음과 같은 오류를 만나게 됩니다:SyntaxError: did you forget parentheses around the comprehension target?처음 보는 사람은 이게 무슨 말인지 잘 이해되지 않죠.그래서 이 글에서는 괄호 하나가 왜 그렇게 중요한지,직관적 비유와 실습 예제를 통해 쉽게 풀어보겠습니다.1. 상황 재현 – 두 개의 시퀀스 조합 만들기seq1 = 'abc'seq2 = (1, 2, 3)이제 이 두..

사용자 정의 함수를 활용한 고급 key 정렬

사용자 정의 함수를 활용한 고급 key 정렬파이썬에서 딕셔너리는 기본적으로 순서를 보장하지 않는 자료형이었지만,Python 3.7 이후로는 입력 순서가 유지되는 구조로 바뀌었습니다.하지만 우리가 원하는 기준대로 정렬하려면 여전히 sorted() 함수와 key 옵션을 활용해야 합니다.이번 글에서는 딕셔너리를 키 기준이 아닌 값(value) 기준으로 정렬하는 방법,그리고 lambda 함수를 활용한 다양한 정렬 응용 예제를 소개합니다.1. 기본적인 딕셔너리 키 정렬우선 아래와 같은 딕셔너리를 만들어 봅니다.d = {'one': 1, 'tow': 2, 'three': 3, 'four': 4}키 기준으로 정렬하기for key in sorted(d): print(f'{key} => {d[key]}')출력 결과..

파이썬 리스트 정렬 완전 정복 – sort(), sorted(), key 옵션까지

파이썬 리스트 정렬 완전 정복 – sort(), sorted(), key 옵션까지파이썬에서 리스트를 정렬하는 방법에는 크게 두 가지가 있습니다.하나는 리스트 자체를 정렬하는 .sort() 메서드이고,다른 하나는 정렬된 새로운 리스트를 반환하는 sorted() 함수입니다.이 글에서는 두 방법의 차이를 명확하게 설명하고,정렬 기준을 지정할 수 있는 key 옵션까지 포함해 실용적인 예제를 함께 소개합니다.1. 리스트 자체를 정렬하는 sort()L = [1, 6, 3, 8, 6, 2, 9]L.sort()print(L) # [1, 2, 3, 6, 6, 8, 9].sort()는 리스트 객체에 직접 호출합니다.정렬은 **제자리(in-place)**에서 이루어져 리스트 L 자체가 바뀝니다.반환값은 None 이므로 결..

리스트 메서드, remove(), pop(), clear()

리스트에서 요소를 삭제하거나 비우는 데 사용되는 주요 메서드인 remove(), pop(), clear()리스트에서 요소를 삭제할 때는 remove(), pop(), clear() 메서드를 사용합니다. remove(x)는 값이 x인 첫 항목을 삭제하고, pop()은 마지막 요소를 꺼내며, clear()는 리스트를 완전히 비웁니다.✅ 삭제 관련 리스트 메서드1. remove(x)값이 x인 첫 번째 항목을 삭제합니다.값이 없으면 ValueError 발생.s = [1, 2, 3, 2, 4]s.remove(2)print(s) # [1, 3, 2, 4]※ 두 번째 2는 남아 있습니다.2. pop()마지막 요소를 꺼내서 반환하며 리스트에서 제거합니다.s = [1, 2, 3]x = s.pop()print(x) #..

리스트의 주요 메서드 작동 방식

올려주신 코드 실행 결과는 리스트의 주요 메서드 작동 방식을 잘 보여주는 예입니다. 아래에 각 단계별로 설명드리겠습니다.📌 코드 분석s = [1, 2, 3]리스트 s는 [1, 2, 3]으로 시작합니다.✅ append(5)s.append(5) → [1, 2, 3, 5]리스트 맨 끝에 5 추가✅ insert(3, 4)s.insert(3, 4) → [1, 2, 3, 4, 5]인덱스 3 위치에 4를 삽입 (기존 5는 뒤로 밀림)✅ index(3) / index(4)s.index(3) → 2s.index(4) → 3해당 값이 처음 등장하는 인덱스를 반환✅ reverse()s.reverse() → [5, 4, 3, 2, 1]리스트 순서를 뒤집음✅ sort()s.sort() → [1, 2, 3..

중첩 리스트와 얕은복사와 깊은복사

중첩 리스트와 얕은복사와 깊은복사중첩 리스트는 리스트 안에 또 다른 리스트가 포함된 구조입니다. 얕은 복사는 바깥 리스트만 복사하고 내부 리스트는 원본과 공유합니다. 반면 깊은 복사는 모든 계층의 리스트를 새로 만들어 원본과 완전히 독립된 구조를 만듭니다.📌 코드 요약:L = [1, ['a', ['x', 'y'], 'b'], 3]L은 중첩 리스트를 포함하는 구조입니다.구성은 다음과 같습니다:L[0] = 1 L[1] = ['a', ['x', 'y'], 'b'] L[2] = 3📌 인덱싱 흐름:L[1]→ ['a', ['x', 'y'], 'b']L[1][1]→ ['x', 'y'](위 리스트의 두 번째 요소)L[1][1][1]→ 'y'(그 리스트에서 인덱스 1, 즉 'y'를 추출)🧠 핵심 개념:이중, 삼중 ..

얕은 복사(shallow copy)와 깊은 복사(deep copy)

얕은 복사(shallow copy)와 깊은 복사(deep copy)파이썬에서 얕은 복사(shallow copy)와 깊은 복사(deep copy)는 자료구조, 특히 리스트, 딕셔너리 등 변경 가능한 객체를 다룰 때 매우 중요한 개념입니다. 아래에서 차이점을 예시와 함께 설명드리겠습니다.🔹 1. 얕은 복사 (Shallow Copy)얕은 복사는 가장 바깥쪽 객체만 새로 복사하고, 내부에 포함된 객체는 원본과 동일한 참조를 공유합니다.예시:import copyoriginal = [[1, 2], [3, 4]]shallow = copy.copy(original)이때 구조는 다음과 같습니다:original과 shallow는 서로 다른 리스트이지만,original[0], original[1]은 shallow[0], ..

리스트 내포와 조건문을 활용한 곱셈 필터링 실습

리스트 내포와 조건문을 활용한 곱셈 필터링 실습파이썬에서는 리스트 내포(List Comprehension)를 이용하면 복잡한 반복문과 조건문을 간결하게 표현할 수 있습니다.이번 실습은 세 수 i, j, i * j로 구성된 튜플을 생성하되, 특정 조건을 만족하는 경우만 리스트에 포함시키는 예제입니다.예제 설명L = [(i, j, i * j) for i in range(2, 100, 2) for j in range(3, 100, 3) if (i + j) % 7 == 0]구성 설명:i: 2부터 99까지 2씩 증가하는 짝수j: 3부터 99까지 3씩 증가하는 홀수i * j: 곱셈 결과조건: (i + j) % 7 == 0→ i + j의 합이 7의 배..