반응형
📘 Day 10. 리스트 복사와 고급 활용
1. 리스트 복사 방법
✅ 전체 복사 방법
방법 설명
[:] | 전체 슬라이싱 복사 |
list() | 생성자를 이용한 복사 |
.copy() | 리스트 메서드를 이용한 복사 |
a = [1, 2, 3]
b = a[:] # 슬라이싱
c = list(a) # list 함수
d = a.copy() # copy 메서드
모두 얕은 복사(shallow copy)에 해당
→ 리스트 안에 중첩 리스트가 있다면 내부 요소는 공유됨
🔁 깊은 복사(Deep Copy)
- 중첩 리스트까지 완전히 복사할 때 사용
- copy 모듈의 deepcopy() 함수 사용
import copy
a = [[1, 2], [3, 4]]
b = copy.deepcopy(a)
2. 리스트 비교
- 같은 인덱스의 값을 하나씩 비교
- 값이 다르면 그 시점에서 비교 종료
a = [1, 2, 3]
b = [1, 2, 4]
print(a < b) # True
3. 리스트 순회 방법
일반적인 for문
for i in range(len(a)):
print(a[i])
반복자 사용
for item in a:
print(item)
enumerate() 함수
for i, value in enumerate(a):
print(i, value)
zip() 함수
- 여러 리스트를 병렬로 순회
names = ['홍길동', '이몽룡']
scores = [90, 85]
for name, score in zip(names, scores):
print(name, score)
4. 리스트 컴프리헨션 (List Comprehension)
기본 형식
squares = [x**2 for x in range(1, 6)]
조건 포함 형식
even = [x for x in range(10) if x % 2 == 0]
- 간결하고 효율적인 코드 작성 가능
5. 파이썬 내장 산술 함수
함수 설명 예시
sum() | 합계 | sum([1,2,3]) → 6 |
max() | 최대값 | max([1,5,3]) → 5 |
min() | 최소값 | min([1,5,3]) → 1 |
abs() | 절대값 | abs(-7) → 7 |
round() | 반올림 | round(3.14159, 2) → 3.14 |
divmod() | 몫과 나머지 | divmod(10,3) → (3, 1) |
6. 리스트 활용 실습 예제
✅ 문제 1
5개의 정수를 입력받아 평균과 평균과의 차이 출력
예시 코드
nums = []
total = 0
for _ in range(5):
n = int(input("정수 입력: "))
nums.append(n)
total += n
avg = total / 5
print(f"평균: {avg}")
for n in nums:
diff = abs(n - avg)
print(f"{n}와 평균의 차이: {diff}")
✅ 문제 2
0이 입력될 때까지 정수를 입력받아 평균, 편차, 편차 제곱, 분산 계산
예시 코드
nums = []
while True:
n = int(input("정수 입력 (0 입력 시 종료): "))
if n == 0:
break
nums.append(n)
if nums:
avg = sum(nums) / len(nums)
print(f"평균: {avg:.2f}")
deviations = [x - avg for x in nums]
dev_squares = [d**2 for d in deviations]
variance = sum(dev_squares) / len(nums)
for i in range(len(nums)):
print(f"값: {nums[i]}, 편차: {deviations[i]:.2f}, 편차제곱: {dev_squares[i]:.2f}")
print(f"분산: {variance:.2f}")
else:
print("입력된 값이 없습니다.")
✅ 오늘의 정리
항목 설명
복사 | 얕은 복사 vs 깊은 복사 (copy.deepcopy()) |
리스트 순회 | for, enumerate(), zip() |
리스트 컴프리헨션 | [] 안에서 for문과 조건 사용 |
내장 산술 함수 | sum(), max(), round() 등 |
실습 | 평균, 편차, 분산 계산 문제 |
다음 차시에서는 **딕셔너리(dict)**와 집합(set) 자료형을 활용하여, 키-값 관리 및 중복 없는 데이터 처리 방법을 학습합니다.
'십대를 위한 코딩 > 십대를 위한 파이썬' 카테고리의 다른 글
12. 딕셔너리 메서드와 실전 활용 (0) | 2025.04.02 |
---|---|
11. 딕셔너리(dict)의 개념과 활용 (1) | 2025.04.01 |
09. 리스트의 활용과 정렬 (0) | 2025.03.30 |
08. 리스트(list) (2) | 2025.03.29 |
07. 문자열(str)과 튜플(tuple) (1) | 2025.03.28 |