리스트란?
- 여러 개의 데이터를 하나의 변수에 담을 수 있는 데이터 구조
- [ ] 대괄호 사용
score = [90, 89, 77, 95, 67]
fruit = ["apple", "banana", "orange"]
"""
리스트 생성
"""
# 1) []을 이용하여 리스트 생성 -> 값을 직접 넣어서 생성
list1 = [3, 15, -12.5, "사과", "딸기" ]
print(list1)
# 2) list() 함수로 리스트 생성
list2 = list(range(1, 21, 2))
print(list2)
리스트는 데이터 형식 상관없이 숫자, 문자 형식의 정보를 한 곳에 저장 가능.
"""
리스트에서 요소 추출
"""
color = ["빨강", "주황", "노랑", "초록", "파랑", "남색", "보라"]
print(color[0])
# 출력: 빨강
print(color[6])
print(color[-1])
# 출력: 보라
# 보라
print(color[2:5])
print(color[-5:5])
# 출력: ['노랑', '초록', '파랑']
# ['노랑', '초록', '파랑']
print(color[4:])
print(color[-3:])
# 출력: ['파랑', '남색', '보라']
# ['파랑', '남색', '보라']
리스트의 마지막 데이터를 가져오고 싶을 때
리스트 인덱스를 -1 해주면
뒷 데이터를 가져와줌!
-1 -2 -3 -4 -5 -6 -7
color = ["빨강", "주황", "노랑", "초록", "파랑", "남색", "보라"]
0 1 2 3 4 5 6
color2 = ["빨강", "주황", "노랑", "초록", "파랑", "남색", "보라", "무지개"]
print(color2[4:])
print(color2[-3:])
# 출력: ['파랑', '남색', '보라', '무지개']
# ['남색', '보라', '무지개']
-1, -2 ... 인덱스를 사용하는 이유는
뒤에서 두 번째 정보를 추출하고 싶을 때
color[5]으로 출력할 수 있지만
list 정보가 늘어나게 되면
color[6]로 바뀌기 때문에
→ color[-2] 로 사용하면 논리적 오류가 나지 않음!
for문에서 리스트를 사용
"""
for에서 리스트 사용
"""
colors = ["빨강", "주황", "노랑", "초록", "파랑", "남색", "보라"]
# 리스트를 사용한 for (요소 추출)
for color in colors:
print("나는 %s을 좋아한다." % color)
print()
# index를 사용한 for (요소 추출)
for i in range(0, len(colors)):
print("나는 %s을 좋아한다." % colors[i])
"""
출력:
나는 빨강을 좋아한다.
나는 주황을 좋아한다.
나는 노랑을 좋아한다.
나는 초록을 좋아한다.
나는 파랑을 좋아한다.
나는 남색을 좋아한다.
나는 보라을 좋아한다.
"""
첫 번째 리스트를 사용한 for문은
값만 가져오기 때문에 colors[1], colors[3] ... 이런식으로 내가 원하는 인덱스만 가져올 수 없음.
index를 사용한 for문은 내가 원하는 인덱스를 사용할 수 있음.
ex) list 중 홀수 인덱스만 가져오기, 짝수 인덱스만 가져오기
while문에서 리스트 사용
"""
while문에서 리스트 사용
"""
animals = ["코끼리", "호랑이", "사슴", "펭귄", "여우"]
i = 0
while i < len(animals):
print(animals[i])
i = i + 1
while문에서 리스트를 가져오는 것도 가능하나
무조건 써야 하는 상황이 아니면 비추
리스트 요소 수정 및 추가
"""
리스트 요소 수정 및 추가
"""
flowers = ["목련", "벚꽃", "장미", "백일홍"]
print(flowers)
# 벚꽃 -> 무궁화로 변경
# 리스트명[인덱스] = 데이터
flowers[1] = "무궁화"
print(flowers)
# 리스트에 안개꽃을 추가
# flowers[4] = "안개꽃"
# error
flowers.append("안개꽃")
print(flowers)
list의 요소를 추가할 때
list[index] = "요소"로 넣으면 에러가 뜬다.
list의 공간은 4번째 방밖에 없는데 5번째 방에 데이터를 넣으려고 해서!
요소를 추가하기 위해서는
→ 리스트명.append("요소")
리스트 중간에 요소 삽입 및 위치 찾기
"""
리스트 요소 삽입 및 위치 찾기
"""
flowers = ["목련", "벚꽃", "장미", "백일홍"]
print(flowers)
# 벚꽃 위치에 무궁화 삽입 대신에 기존 데이터 유지
# 리스트명.insert(인덱스, 데이터)
flowers.insert(1, "무궁화")
print(flowers)
# 출력: ['목련', '무궁화', '벚꽃', '장미', '백일홍']
# index 위치를 찾기
# 리스트명.index(데이터)
print(flowers.index("벚꽃"))
# 출력: 2
# 벚꽃 위치에 안개꽃 삽입 대신에 기존 데이터 유지
flowers.insert(flowers.index("벚꽃"), "안개꽃")
print(flowers)
# 출력: ['목련', '무궁화', '안개꽃', '벚꽃', '장미', '백일홍']
기존 데이터를 유지하면서 "벚꽃" 위치에 무궁화를 삽입하고 싶다면
→ list.insert(인덱스, "요소")
"벚꽃" 요소에 index 위치를 찾기 위해서는
→ list.index("요소")
list를 쓸 때 요소는 알지만 인덱스 번호를 모를 때는
→ list.index로 요소 번호를 찾고 그 자리에 insert를 해준다!
리스트 요소 삭제
"""
리스트 요소 삭제
"""
flowers = ['목련', '무궁화', '안개꽃', '벚꽃', '장미', '백일홍']
# 특정 요소를 삭제 -> 리스트.remove(데이터)
# 안개꽃 삭제
flowers.remove("안개꽃")
print(flowers)
# 출력: ['목련', '무궁화', '벚꽃', '장미', '백일홍']
# 특정 요소를 삭제 -> 삭제할 정보를 사용할 경우
# 리스트.pop(인덱스)
# flowers 리스트에서 벚꽃을 삭제하고 flower 변수에 담기
flower = flowers.pop(flowers.index("벚꽃"))
print(flowers)
# 출력: ['목련', '무궁화', '벚꽃', '장미', '백일홍']
# 리스트에 모든 요소를 삭제
flowers.clear()
print(flowers)
리스트에 특정 요소를 삭제하고 싶을 때
→ list.remove("요소")
리스트에 특정 요소를 삭제하고 삭제할 정보를 사용할 경우
→ list.pop(인덱스)
리스트에 모든 요소 삭제
→ list.clear()
리스트 병합
"""
리스트 병합
"""
person1 = ["kim", 24, "kim@naver.com"]
person2 = ["lee", 35, "lee@hanmail.net"]
person = person1 + person2
print(person)
# 출력: ['kim', 24, 'kim@naver.com', 'lee', 35, 'lee@hanmail.net']
리스트 2개를 1개 리스트로 합치고 싶을 때는 + 연산자만 쓰면 된다!
리스트 합계, 평균 구하기
"""
리스트 합계, 평균 구하기
"""
scores = [80, 90, 85, 95, 100]
sm = sum(scores)
print("합계: ", sm)
print("평균: ", sm/len(scores))
# 출력: 합계: 450
# 평균: 90.0
파이썬은 for문을 쓰지 않아도 내장 함수 sum으로 합계를 구할 수 있음.
+ 리스트에서 제공하는 함수
"""
리스트에서 제공하는 함수 예제
"""
# 1) 리스트 요소를 반대로 출력
# 리스트명.reverse()
data = [10, 20, 30, 40, 50]
print(data)
data.reverse()
print(data)
# 2) 리스트 복사하기
# 리스트명.copy()
flowers = ["목련", "벚꽃", "장미" ]
flowers1 = flowers.copy()
print(flowers1)
# 3) 리스트 정렬하기
# 리스트명.sort() -> 기본값: 오름차순 정렬
data = [12, 8, 15, 32, -3, -20, 15, 34, 6]
print(data)
data.sort()
print(data)
# 내림차순(큰 것부터 나옴, 최신 날짜순)
# 리스트명.sort(reverse=True)
data.sort(reverse=True)
print(data)
문자열 메소드
"""
문자열에서 제공하는 메소드 예제
"""
# 1) find()
# 문자열.find(찾을 문자) -> 찾은 문자의 위치
string1 = "Python is fun!"
print(string1)
print(string1.find("fun"))
print(string1.find("funny")) # 찾는 문자가 없으면 -1
# 출력: Python is fun!
# 10
# -1
# 2) 문자열 치환하기 replace(기본데이터, 치환할 데이터)
# 하이픈을 제거한 핸드폰 번호를 출력
phone = "010-1234-5678"
print(phone)
phone1 = phone.replace("-", "")
print(phone1)
# 출력: 010-1234-5678
# 01012345678
# 3) 문자열 분리하기 split(특정문자) -> 리스트로 반환
hello = "have a nice day"
print(hello)
list1 = hello.split( )
print(list1)
print(type(list1))
for l in list1:
print(l)
"""
출력: have a nice day
['have', 'a', 'nice', 'day']
<class 'list'>
have
a
nice
day
"""
# 4) 리스트를 문자열로 변환 문자열_분리기준.join(리스트)
text = ""
for l in list1:
text = text + " " + l
print(text)
# 출력: have a nice day
#join 함수 활용
text = " ".join(list1)
print(text)
# 출력: have a nice day
# 하이픈이 포함된 휴대폰 번호
phone = "010-1234-5678"
print(phone)
# 출력: 010-1234-5678
# 하이픈 기준으로 분리된 휴대폰 번호
phone1 = phone.split("-")
print(phone1)
# 출력: ['010', '1234', '5678']
# 하이픈 기준으로 연결한 휴대폰 번호
phone2 = "-".join(phone1)
print(phone2)
# 출력: 010-1234-5678
2차원 리스트의 구조
"""
2차원 리스트 구조
"""
numbers = [[10, 20, 30], [40, 50, 60, 70]]
print(numbers[0][0])
print(numbers[1][0])
print()
print(len(numbers[0])) # 1차원
print(len(numbers[1])) # 2차원
print()
print(sum(numbers[0])) # 1차원
print(sum(numbers[1])) # 2차원
이중 for문으로 2차원 리스트 요소 추출
numbers = [[10, 20, 30], [40, 50, 60, 70]]
# 2차원 리스트 for문 사용
for i in range(len(numbers)):
for j in range(len(numbers[i])):
print("numbers[%d][%d] = %d" % (i, j, numbers[i][j]))
다섯 명의 학생에 대한 세 과목 성적의 합계와 평균을 구하는 프로그램
"""
다섯 명의 학생에 대한 세 과목 성적의 합계와 평균을 구하는 프로그램
"""
scores = [[75, 83, 90], [86, 86, 73], [76, 95, 83], [89, 96, 69], [89, 76, 93]]
for i in range(len(scores)):
sm = 0
for j in range(len(scores[i])):
sm = sm + scores[i][j]
# 평균
avg = sm / len(scores[i])
print("%d번째 학생의 합계: %d, 평균: %.2f" % (i+1, sm, avg))
"""
출력:
1번째 학생의 합계: 248, 평균: 82.67
2번째 학생의 합계: 245, 평균: 81.67
3번째 학생의 합계: 254, 평균: 84.67
4번째 학생의 합계: 254, 평균: 84.67
5번째 학생의 합계: 258, 평균: 86.00
"""
이중 for문을 사용하지 않고 합계와 평균을 구하기
# 2중 for문을 사용하지 않고 합계와 평균을 구하기
for i in range(len(scores)):
sm = 0
sm = sum(scores[i])
avg = sm / len(scores[i])
print("%d번째 학생의 합계: %d, 평균: %.2f" % (i+1, sm, avg))
"""
출력
1번째 학생의 합계: 248, 평균: 82.67
2번째 학생의 합계: 245, 평균: 81.67
3번째 학생의 합계: 254, 평균: 84.67
4번째 학생의 합계: 254, 평균: 84.67
5번째 학생의 합계: 258, 평균: 86.00
"""
튜플이란?
- 튜플에서는 리스트의 대괄호([ ]) 대신에 소괄호 (( ))를 사용.
- 튜플에서는 리스트와는 달리 요소의 수정과 추가가 불가능함.
"""
튜플 생성
"""
animals = ("토끼", "거북이", "사자", "여우")
print(animals)
print(animals[0])
# 출력: ('토끼', '거북이', '사자', '여우')
# 토끼
# animals[0] = "호랑이"
# error
튜플은 데이터를 지정하면 수정할 수 없음!
튜플의 병합
tup1 = tuple(range(10, 51, 10))
tup2 = tuple(range(100, 151, 10))
# 튜플 병합
tup = tup1 + tup2
print(tup)
딕셔너리란?
- 리스트와는 다른 방법으로 추출
- key, value 형태로 되어있음.
"""
딕셔너리 생성 및 요소 추출
"""
# 딕셔너리 생성
member = {"name":"황예린", "age":22, "email":"yerin@hanmail.net"}
print(member)
# 출력: {'name': '황예린', 'age': 22, 'email': 'yerin@hanmail.net'}
score = dict([("국어", 80), ("영어", 90), ("수학", 100)])
print(score)
# 출력: {'국어': 80, '영어': 90, '수학': 100}
# 딕셔너리 요소 추출
# 딕셔너리명[key] -> value 요소가 추출됨
print(member["name"])
print(member["email"])
print(score["국어"])
print(score["수학"])
"""
출력
황예린
yerin@hanmail.net
80
100
"""
딕셔너리 요소 추가
score = dict([("국어", 80), ("영어", 90), ("수학", 100)])
print(score)
# 딕셔너리 요소 추가
# score 딕셔너리에 음악 점수 100점 추가
score["음악"] = 100
score["국어"] = 100
print(score)
딕셔너리명[key[ = 값 → 키가 없으면 새로 등록, 있으면 값이 수정됨.
딕셔너리 요소 삭제
score = dict([("국어", 80), ("영어", 90), ("수학", 100)])
# 딕셔너리 요소 삭제
# 음악 점수 삭제
# 딕셔너리명.pop(키)
x = score.pop("음악")
print(score)
print(x)
# 출력: {'국어': 100, '영어': 90, '수학': 100}
# 100
# 딕셔너리 전체 삭제
# 딕셔너리명.clear()
score.clear()
print(score)
for문에 딕셔너리 사용
# 딕셔너리 생성
member = {"name":"황예린", "age":22, "email":"yerin@hanmail.net"}
print(member)
# 딕셔너리를 for문에 사용하면 key값을 return
for key in member:
print(key, ":", member[key])
딕셔너리를 for문에 넣으면 key 값을 반환해줌!
for문을 사용하지 않고 딕셔너리의 총합과 평균 구하기
# for문을 사용하지 않고 딕셔너리의 총합과 평균 구하기
scores = {"김채린": 85, "박수정": 98, "함소희": 94, "안예린": 90, "연수진": 93}
print(scores.values())
sm = sum(scores.values())
avg = sm / len(scores)
print("합계: %d, 평균: %.2f" % (sm, avg))
list.values() → 딕셔너리 value의 총 합계를 구할 수 있음.
딕셔너리를 이용하여 영어 단어 퀴즈를 만드는 프로그램
"""
딕셔너리를 이용하여 영어 단어 퀴즈를 만드는 프로그램
"""
words = {"꽃": "flower", "나비": "butterfly", "학교": "school", "자동차": "car", "비행기": "airplane"}
print("<영어 단어 맞추기 퀴즈>")
for kor in words:
input_word = input("'%s'에 해당되는 영어 단어를 입력해주세요: " % kor)
if words[kor] == input_word:
print("정답입니다!")
else:
print("틀렸습니다!")
주중 최저 기온을 가지는 요일과 최저 기온을 출력
"""
딕셔너리 temp에서 주중 최저 기온을 가지는 요일과
최저 기온을 실행결과와 같이 출력하는 프로그램
"""
temp = {"월": 15.5, "화": 17.0, "수": 16.2, "목": 12.9, "금": 11.0, \
"토": 10.5, "일": 13.3}
c = temp["월"]
day = "월"
for key in temp:
if temp[key] < c:
c = temp[key]
day = key
print("요일: %s, 최저 기온: %.1f" % (day, c))
# list comprehension (리스트 컴프리헨션)
# [(변수를 이용한 값) for (사용할 변수 이름) in (순회할 수 있는 값) if (조건)]
c = min(temp.values())
day = [k for k, v in temp.items() if v == c][0]
print("요일: %s, 최저 기온: %.1f" % (day, c))
"""
for문을 돌면서 temp.item()에 key값과 value 값을 나오게 함.
"""
list comprehension (리스트 컴프리헨션)
- '리스트 컴프리헨션'은 리스트를 간단하게 한 줄로 만들 수 있는 파이썬의 문법
[ (변수를 이용한 값) for (사용할 변수 이름) in (순회할 수 있는 값) if (조건) ]
'ABC 부트캠프 > python' 카테고리의 다른 글
5일차 - 타자 게임 프로그램 만들기 (1) | 2023.03.21 |
---|---|
4일차 - python 함수, 모듈, 파일과 예외 처리, 객체지향 프로그래밍 (0) | 2023.03.17 |
2일차 - python 조건문과 반복문 (0) | 2023.03.15 |
1일차 - python 기본 문법 (4) | 2023.03.14 |
댓글