생각하는 감쟈
[Python] 3) 리스트_튜플_딕셔너리 본문

4일차 (23.03.16)
리스트
/ 5.1 리스트란?
여러 개의 데이터를 하나의 변수에 담을 수 있는 데이터 구조
파이썬은 여러 문자 형태들을 섞어 사용할 수 있음 - 리스트 사용
score = [90, 89,77, 95, 67]
fruit = ["apple", "banana", "orange"]
'''
리스트 생성
'''
# 1) []를 이용해서 리스트 생성 -> 값을 직접 넣어서 생성
list = [2, 15, -12.5, "사과", "딸기",]
print(list)
# 2) range() 함수 사용
list2 = list(range(1, 21, 2))
print(list2)
'''
리스트에소 요소 추출
'''
color = ["빨간색", "파란색", "노란색", "검정색", "초록색"]
print(color[0]) # 빨간색 - 인덱스 번호입력 하면 출력
print(color[2:5]) # 리스트에서 슬라이싱 가능
print(color[-1]) # 데이터 맨끝 -> -1로 요소를 시작으로 찾을 수 있음 (-1 = [6]
print(color[2:5]) #앞에서 부터
print(color[-5:-2]) #뒤에서 시작
print(color[-3:]) # 뒤에서 3개 추출
값을 가지고 오는 순서는 앞으로 부터임 순서가 바뀌는 것은 아님(순서를 바꾸고 싶으면 리버스함수를 따로 사용)
뒤에 있는 데이터를 가지고 오고 싶으면값을 [-n] 방번호를 사용하면됨
[0]
|
[1]
|
[2]
|
[3]
|
[4]
|
[5]
|
[6]
|
빨
|
주
|
노
|
초
|
파
|
남
|
보
|
[-7]
|
[-6]
|
[-5]
|
[-4]
|
[-3]
|
[-2]
|
[-1]
|
ex) 뒤에서 부터 10 추출 - > [- 10:]
데이터가 고정일때는 앞에서부터 인데스를 사용하지만
데이터가 유동적인 상태면 뒤에서 부터 [-n] 인덱스를 사용하는게 더 편함
/ 5.2 반복문과 리스트
'''
for에서 리스트 사용
'''
colors = ["빨간색", "파란색", "노란색", "검정색", "초록색"]
#리스트 사용한 for(요소 추출)
for color in colors :
print("나는 %s을 좋아합니다" % color)
# 배열이 가지고 있는 값을 순차적으로 출력
#index 사용한 for (요소 추출)
for i in range(0, len(color)) : #인덱스 번호를 부여하여 값을 가져옴
print("나는 %s을 좋아합니다" % color)
list 사용한 for
전체 출력은 가능 함. 값만 가지고옴 값으로는 비교 가능
값 출력 불가능, 인덱스 사용 불가능 - 리스트가 가지고 있는 인덱스는 처리 불가능
index 사용한 for
인덱스 번호를 부여하여 값을 가져옴
데이어에 따른 처리는 range 인데스 요소를 사용할겠다 값, 인덱스 둘 다 처리 가능
'''
while 문
'''
animals = ["코끼리", "호랑이", "사슴", "펭귄", "여우"]
i = 0
while i < len(animals) :
print(animals[i])
i = i + 1
/ 5.3 리스트 요소 변환
'''
list 요소 수정
'''
flowers = ["목련", "벚꽃", "장미", "백일홍"]
print(flowers)
flowers[1] = "무궁화"
print(flowers)
'''
list 요소 수정
'''
flowers = ["목련", "벚꽃", "장미", "백일홍"]
print(flowers)
flowers[1] = "무궁화"
print(flowers)
flowers.append("안개꽃")
print(flowers)
요소 수정
- 리스트명[인데스] = 데이터
요소 추가
- 추가 메모리를 늘려주는 작엄 함수 사용 - append 데이터 맨 뒤로 붙는 형태
- 리스트명.append(데이터)
'''
빈 리스트에 요소 추가 예쩨
사용자가 여러개의 성적을 입력하면 리스트로 담아서 출력
'''
scores = [] #초기화 작업
while True :
score = int(input("성적을 입력하세요 (종료 : -1) : "))
if score == -1 :
break
else :
score.append(score)
print(score)
리스트 담기(append) 전에 종료(-1) 할건지 먼저 물어봐야 됨
종료 전에 라스트를 담으면 안됨
'''
요소 삽입 및 위치 찾기
'''
fruits = ["apple", "orange", "banana", "cherry"]
print(fruits)
#사과 위치에 멜론삽입, 대신 기존 데이터 유지 -> 끼워넣기
#리스트명.insert(인덱스, 데이터)
fruits.insert(1, "melon")
print(fruits)
#index 위치를 찾기
#리스트명.index(데이터)
print(fruits.index("melon"))
#사과 위치에 안개꽃 삽입 대신에 기존 데이터 유지 -> 끼워 넣기
#단, 인덱스 번호 숫자 입력 금지
fruits.index(fruits.index("apple"),"melon")
print(fruits)
'''
빈 리스트에 요소를 추가
'''
#deta = list(range(10 21)
deta = []
for x in range(10, 21) :
deta.append(x)
print(deta)
'''
요소 삭제
'''
fruits = ["apple", "orange", "banana", "cherry"]
print(fruits)
#특정 요소를 삭제 리스트.remove(데이터)
#바나나 삭제
fruits.remove("banana")
print(fruits)
#특정 요소를 삭제 -> 삭제 할 정보를 사용할 경우.
#리스트.pop(index 사용)
#fruits리스트에서 사과를 삭제하고 그 값을 fruit라는 변수에 담기
fruit = fruits.pop(fruits.index("apple"))
print(fruits)
print(fruit)
#리스트에 모든요소를 삭제
#리스트명.clear()
fruits.clear()
print(fruits)
/ 5.4 리스트 다루기
'''
리스트 병합
'''
person1 = ["kim", 24, "kim@naver.com"]
person2 = ["lee", 35, "lee@hanmail.com"]
person = person1 + person2 #두 리스트 합치기
print(person)
'''
요소의 합계와 평균
'''
scores = [80, 90, 85, 95, 100]
sum = 0
sm = sum(scores)
avg = sm/len(scores)
print("합계 : ", sm)
print("평균 : :", avg)
print("sum ()을 이용한 합계 : ", sum(scores))
print("sum ()을 이용한 평균 : ", sum(scores)/len(sccores))
sum은 원래 내장 함수지만 변수명으로 사용하고 싶으면
sum = 0 으로 초기화 해주면 됨
'''
리스트에서 제공하는 함수 예제
'''
# 1) 리스트 요소를 반대로 변경
# 리스트명.reverse
data = [10, 20, 30, 40, 50]
print(data)
data.reverse()
print(data)
# 2) 리스트 복사하기
# 리스트명.copy()
fruits=["apple", "banana", "arange"]
fruits1=fruits.copy()
fruits.clear
print(fruits1)# fruits1=fruits를 사용하면 출력은 비워있음
#이런 리스트 들은 값이 아니라 주소를 주는 것임 값으 그대로 살리고 싶으면
#copy를 사용해야함
# 3) 리스트 정렬하기
# 리스트명.sort() -> 오름차순으로 정렬됨(오래된, 작은)
data = [12, 8, 15, 32, -3, -20,15, 34, 6]
print(data)
data.sort()
print(data)
# 내립차순(최신데이터, 큰 거 먼저)
# 리스트명.sort(reverse=Ture) 속성을 정해줌
data.sort(reverse=True)
print(data)
리스트 메소드
append()
|
리스트 제일 뒤에 새로운 요소를 추가함
|
insert()
|
리시트에서 특정 인데스 앞에 새로운 요소를 삽입
|
index()
|
라스트에서 특정 요소의 우치인 인덱스 번호를 구함
|
remove()
|
리스트에서 특정 값을 가진 요소를 삭제
|
pop()
|
리스트에서 특정 값을 가진 요소를 삭제
|
clear()
|
리스트에서 특정 인덱스 번호를 가진 요소를 추출하고
그 요소를 리스트에서 삭제 |
reverse()
|
리스트 요소들의 순서를 거꾸로 함
|
copy()
|
리스트를 복사하여 새로운 이그트 생성
|
sort()
|
리스트 요소들을 오름차순(내림차순으로) 정렬
|
lsit()
|
새로운 리스트를 생성
|
len()
|
리스트의 길이를 구함
|
sum()
|
리스트 요소들의 합계
|
/ 5.5 문자열과 리스트
'''
문자열에서 제공해주는 메소드 예제
'''
# 1) 문자열.find(찾을 문자) - 문자열의 위치(인덱스)를 알려줌
string1 = "Python is fun"
print(string1)
print(string1.find("fun"))
print(string1.find("funny")) #찾는 문자열이 없으면 -1 리턴
# 2) 문자열 치환하기 replace(기존데이터, 치환할 데이터)
phone = "010-1234-5678"
print(phone)
phone1 = phone.replace("-", "")
print(phone1)
# 3) 문자열 분리 쪼개기 split(특정문자) -> 리스트로 반환
hello = "have a nice day"
print(hello)
list1 = hello.split(" ")
print(list1)
print(type(list1))
for l in list1 :
print(l)
# 4) 리스트를 문자열로 변환 문자열.join(리스트)
text = ""
for l in list1 :
text = text = l
print(text)
text = " ".join(list1) #공백 없애고 join/텍스트를 꺼내서 붙이기
print(text)
a = [have, a, nice, day]
위에 데이터들마다 사이사이에 붙어을 넣어서 붙일 꺼냐
split이랑 반대 되는 개념
#split, join 예제
phone = "010-2345-5678"
phone1 = phone.split("-")
print(phone1)
phone2 = "-".join(phone1)
print(phone2)
문자열 메소드
find()
|
문자열에서 특정 문자열을 찾아 위치(인덱스 번호)를 구함
|
replace()
|
문자열에서 특정 문자열을 다른 문자열로 치환함
|
split()
|
특정 문자열을 기준으로 문자열을 쪼개서 리스트에 저장함
|
join()
|
리스트의 요소를 하나로 묶어서 문자열로 변환함
|
/ 5.6 2차원 리스트
리스트명=[[데이터]
'''
2차원 리스트 구조
'''
numbers = [[10, 20, 30],[40, 50, 60, 70, 80]]
print(numbers[0][0])
print(numbers[1][0])
print()
print(numbers[0]) #결과 [10, 20, 30]
print(len(numbers[0])) #결과 : 3
print(len(numbers[1])) #결과 : 5
print(sum(numbers[0])) #결과 : 60
print(sum(numbers[1])) #결과 : 300
numbers = [[10, 20, 30],[40, 50, 60, 70, 80]]
#2차원 리스트 for문 사용
#numbers의 len은 2 -> 요소 2개
for i in range(len(numbers)): #numbers의 요소 2개 반복
for j in range(len(nmbers[i])): #요소 2개의 각각 요소 3, 5개 반복
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))
위 아래 같은 결과물 다른 코드
# 2중 for문을 사용하지 않고 합계 평균 구하기
for i in range(len(scores)) :
sm = 0 #초기화
sm = sum(scores[i])
avg = sm / len(scored[i])
print("%d번째 학생의 합계 : %d, 평균 : %.2f" % (i+1, sm, avg))
튜플과 딕셔너리
/ 6.1 튜플이란?
튜플과 딕셔너리
파이썬에만 있는 튜플과 딕셔너리
튜플과 리스트의 차이점
1 튜플에서는 리스트의 대괄호([]) 대신에 소괄호(())를 사용
2 튜플에서는 리스트와는 달리 요소의 수정과 추가가 불 가능, 읽기만 가능
리스트는 수정이 되고 ㅠㅌ플은 수정이 언됨 정보같은거 담기 좋음
# 튜플 생성
animals =("토끼","거북이","사자","여우")
print(animals)
print(animals[0])
tup1 = tuple(range(10,51,10))
tup2 = tuple(range(100,151,10))
#튜플 요소 추출
for animal in animals :
print (animal)
#animals[2] = "호랑이" 튜플은 요소 수정 불가
#튜플 병합
tup = tup1 + tup2
print(tup)
/ 6.2 딕셔너리란
딕셔너리!
리스트는 인덱스번허로 값을 추출
딕셔너리는 단어와 설명 key, vlaue -> key 커스텀 가능
딕셔너리 - 중가로{ }, dict()로 표현 가능
'''
딕셔너리 생성 및 요소 추출
'''
# 딕셔너리 생성
member = {"name":"박수빈", "age":23, "email":"sbpark@naver.com"}
print(member)
score = dict([("국어",80),("영어",90),("수학",100)])
print(score)
# 딕셔너리 요소 추출
#딕셔너리명[key] ->value 요소거 추출됨
print(member["name"]) #박수빈 출력 키를 줘야 값이 나옴
print(member["age"])
print(score["국어"])
print(score["수학"])
/ 6.3 딕셔너리 요소 변환
# 딕셔너리 요소 추가
# score 딕셔너리에 음악 점수 100점 추가
#딕셔너리명[키] = 값 -> 키가 없으면 ㅐ로 등록, 있으면 값이 수정됨
score["음악"] = 100 # 음악 점수 추가
score["국어"] = 100 # 있는 key면 덮어쓰기 됨
#딕셔너리 요소 삭제
#음악 점수 삭제
# 딕셔너리.pop(key)
x = score.pop("음악")
print(score)
print(x)
#딕셔너리 전체 삭제
#딕셔너리.clear()
score.clear()
print(score)
/ 6.4 for문과 딕셔너리
# 딕셔너리를 for문에 사용하묜 key값을 리턴
for key in member : #딕셔너리 값을 가져다가 키를 줌 (값x)
print (key, ":",member[key]) #key는 가져왔으니 출력해주기

'Language > Python' 카테고리의 다른 글
[Python] 타자 게임 만들기 (2) | 2023.03.20 |
---|---|
[Python] 주말 코딩 연습 (1) | 2023.03.20 |
[Python] 4) 함수_모듈_파일 (0) | 2023.03.19 |
[Python] 2) 조건문_반복문 (0) | 2023.03.16 |
[Python] 1) 파이썬 기초_기본 문법 (4) | 2023.03.15 |