전체 글 387

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

괄호 하나의 차이, 왜 그렇게 중요한가요?― 파이썬 리스트 내포 오류 쉽게 이해하기파이썬 초보자에게 가장 많이 발생하는 실수 중 하나는 리스트 내포(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의 배..

리스트 안에 리스트가 포함될 경우

리스트 안에 리스트가 포함될 경우s = [1, 2, 3]리스트 s를 정의합니다.t = ['begin', s, 'end']리스트 t를 정의합니다.여기서 중요한 점은 s의 값을 복사한 것이 아니라 s 자체(객체의 참조)를 넣은 것입니다.결과적으로 t는 ['begin', [1, 2, 3], 'end']입니다.t[1][1]t[1]은 [1, 2, 3]이고, 그 안의 1번 인덱스 값은 2입니다.결론출력된 값은 2입니다.이 예제는 리스트 안에 리스트가 포함될 경우의 참조 방식과 이중 인덱싱을 잘 보여줍니다.

list에서 range와의 미묘한 관계

list에서 range와의 미묘한 관계a = range(4)a는 range(0, 4)로, 이 자체는 0, 1, 2, 3이라는 값을 생성하지만 아직 리스트는 아님입니다.즉, a는 range 객체입니다.a[::2]이는 슬라이싱 연산으로, range(0, 4) 중에서 인덱스를 2씩 건너뛴 요소들을 의미합니다.결과는 range(0, 4, 2)로 출력됩니다.핵심 설명range 객체는 슬라이싱 시에도 새로운 range 객체를 반환합니다.따라서 a[::2]는 실제로는 0, 2 값을 생성하지만, 출력 형태는 range(0, 4, 2)로 보입니다.실제 값이 궁금하다면?list(a[::2])이렇게 하면 실제 리스트 [0, 2]가 출력됩니다. 결과값이 같지만 객체가 어디에 소속되어 있느냐에 따라 표현되는 형식은 다릅니다.