생각하는 감쟈

[Python] 3) 리스트_튜플_딕셔너리 본문

Language/Python

[Python] 3) 리스트_튜플_딕셔너리

생각하는 감쟈🥔 2023. 3. 17. 15:42

 

 

 

 

 

 

 

 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
Comments