Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- nestjs
- Cookie
- 코딩테스트준비
- aws
- 프로그래머스
- 엘리스sw트랙
- TiL
- mongoDB
- HTML
- 자격증
- JavaScript
- 방송대컴퓨터과학과
- 코딩테스트
- 파이썬프로그래밍기초
- 항해99
- 개발자취업
- Python
- 99클럽
- 코드잇
- 오픈소스기반데이터분석
- 파이썬
- 방송대
- CSS
- redis
- 꿀단집
- 유노코딩
- Git
- 데이터베이스시스템
- 중간이들
- node.js
Archives
- Today
- Total
배꼽파지 않도록 잘 개발해요
방송대 오픈소스기반데이터분석 - 2강. 데이터 분석을 위한 파이썬 프로그래밍 1 본문
1. 리스트와 딕셔너리
2. 데이터 입출력
1. 리스트와 딕셔너리
1) 리스트 슬라이싱
- 리스트의 특정 구간을 추출하거나 역순으로 가져올 수 있음.
- 부분 리스트 추출: [시작:끝:간격]
- 끝 인덱스는 포함하지 않음
- 음수 인덱스 사용 가능 (역순 추출)
- 다차원 리스트에도 적용 가능
nums = [10, 20, 30, 40, 50, 60]
print(nums[1:4]) # [20, 30, 40] → 1~3번 인덱스
print(nums[:3]) # [10, 20, 30] → 처음부터 3개
print(nums[::2]) # [10, 30, 50] → 2칸 간격
print(nums[::-1]) # [60, 50, 40, 30, 20, 10] → 역순
2) 리스트 컴프리헨션
- 반복문과 조건문을 한 줄에 표현
- 기존 리스트 변형, 필터링에 자주 사용
- 코드 간결 + 실행 속도 빠름
# 0~4 생성
nums = [i for i in range(5)]
print(nums) # [0, 1, 2, 3, 4]
# 짝수만 추출
evens = [n for n in range(10) if n % 2 == 0]
print(evens) # [0, 2, 4, 6, 8]
# 제곱 리스트
squares = [n**2 for n in range(6)]
print(squares) # [0, 1, 4, 9, 16, 25]
# 중첩 반복문
fruits = ["사과", "바나나"]
forms = ["주스", "잼"]
pairs = [(f, x) for f in fruits for x in forms]
print(pairs) # [('사과','주스'), ('사과','잼'), ('바나나','주스'), ('바나나','잼')]
3) 딕셔너리 컴프리헨션
- {키: 값 for 변수 in 반복객체}
- 조건문으로 특정 원소만 추출 가능
- 매핑/변환 시 간결하고 유용
# 숫자: 제곱
squares = {n: n**2 for n in range(5)}
print(squares) # {0:0, 1:1, 2:4, 3:9, 4:16}
# 짝수만 필터링
even_squares = {n: n**2 for n in range(10) if n % 2 == 0}
print(even_squares) # {0:0, 2:4, 4:16, 6:36, 8:64}
# 문자열 길이
words = ["apple", "banana", "kiwi"]
lengths = {w: len(w) for w in words}
print(lengths) # {'apple': 5, 'banana': 6, 'kiwi': 4}
2. 데이터 입출력
1) 문자열 형식 지정
- 출력 시 변수 값 삽입
- 세 가지 방식 존재:
- % 연산자 (C 스타일, 구식)
- str.format() (유연, 다양한 기능)
- f-string (가장 간단, 추천)
% 연산자
% 연산자의 형식 지정자 종류:
- %d, %i → 정수
- %o, %x, %X → 8진수/16진수
- %f, %.2f → 실수(소수점 자리수 지정)
- %c → 문자
- %s → 문자열
- %% → % 자체 출력
# 8진수 / 16진수
num = 255
print("8진수: %o, 16진수: %x, 대문자 16진수: %X" % (num, num, num))
# 8진수: 377, 16진수: ff, 대문자 16진수: FF
# %c (아스키코드 → 문자)
print("%c" % 65) # A
str.format()
- 다양한 출력 옵션 지원: 정렬, 패딩, 소수점, 천 단위 구분자
name, age, salary, tax_rate = "홍길동", 30, 3500000, 0.1
print("직원정보: 이름: {0} 나이: {1}".format(name, age))
# 직원정보: 이름: 홍길동 나이: 30
print("급여: {0:,}원, 세금: {1:.1%}".format(salary, tax_rate))
# 급여: 3,500,000원, 세금: 10.0%
f-string
- {변수:,} → 천 단위 구분자, {:.1%} → 백분율 표현
- 표현식 직접 삽입 가능
salary, tax_rate = 3500000, 0.1
name, age = "홍길동", 30
print(f"이름: {name}, 나이: {age}, 세후 월급: {int(salary*(1-tax_rate)):,}원")
# 이름: 홍길동, 나이: 30, 세후 월급: 3,150,000원
전체 비교
name, age, pi = "홍길동", 30, 3.14159
# (1) % 연산자
print("이름: %s, 나이: %d, 원주율: %.2f" % (name, age, pi))
# 이름: 홍길동, 나이: 30, 원주율: 3.14
# (2) str.format()
print("이름: {}, 나이: {}, 원주율: {:.2f}".format(name, age, pi))
print("이름: {n}, 나이: {a}".format(n=name, a=age))
# 이름: 홍길동, 나이: 30, 원주율: 3.14
# (3) f-string (Python 3.6+)
print(f"이름: {name}, 나이: {age}, 원주율: {pi:.2f}")
# 이름: 홍길동, 나이: 30, 원주율: 3.14
# 추가: 수식/함수 사용 가능
print(f"내년 나이: {age+1}") # 내년 나이: 31
print(f"이름 대문자: {name.upper()}") # 이름 대문자: 홍길동
2) 컨텍스트 관리 (with문)
- 컨텍스트 관리의 목적: 리소스 누수 방지 (파일, DB, 소켓)
- with 블록을 벗어나면 자동으로 자원이 해제됨.
- close() 호출 필요 없음 → 코드 안정성 ↑
- 여러 자원 동시에 관리 가능
# (1) 일반 방식
f = open("test.txt", "w")
f.write("Hello\n")
f.close()
# (2) with문 사용 (자동 close)
with open("test.txt", "w") as f:
f.write("Hello, Python!\n")
# (3) 여러 파일 동시에 관리
with open("input.txt", "r") as fin, open("output.txt", "w") as fout:
for line in fin:
fout.write(line.upper())
# (4) 예외 발생해도 안전
try:
with open("data.txt", "r") as f:
for line in f:
print(line.strip())
except Exception as e:
print("에러 발생:", e)
요약
1. 리스트와 딕셔너리
- 슬라이싱: [시작:끝:간격], 음수 가능, 역순 가능
- 리스트 컴프리헨션: [표현식 for 변수 in 객체 if 조건] → 간결하고 빠름
- 딕셔너리 컴프리헨션: {키: 값 for 변수 in 객체 if 조건} → 매핑/필터링 편리
2. 데이터 입출력
- 문자열 포맷팅
- % 연산자: 기본 C 스타일 (%d, %f, %s, %x, %c, %% 등).
- str.format(): 다양한 포맷, 유연. 정렬·패딩·천 단위 구분자 지원
- f-string: 가장 간단, 추천 방식
- 컨텍스트 관리
- with문으로 자원 자동 해제 → 메모리 누수 방지, 코드 안정성↑
728x90
'방송대 컴퓨터과학과 > 오픈소스기반데이터분석' 카테고리의 다른 글
방송대 오픈소스기반데이터분석 - 3강. 데이터 분석을 위한 파이썬 프로그래밍 2 (0) | 2025.09.18 |
---|---|
방송대 오픈소스기반데이터분석 - 1강. 데이터 분석과 오픈소스 (0) | 2025.09.17 |