TIL | 파이썬 기초 # 5

vel.Ash·2022년 3월 15일
0
post-thumbnail

🤭 리스트

1.리스트 정의하기

numbers = [2, 3, 5, 7, 11, 13]
names = ["윤수", "혜린", "태호", "영훈"]

2.인덱싱 (indexing)

numbers = [2, 3, 5, 7, 11, 13]
names = ["윤수", "혜린", "태호", "영훈"]

print(names[1])  # 0부터 시작해서 1이면 -> "혜린"

num_1 = numbers[1]  # 변수에 값 지정함 
num_3 = numbers[3]
print(num_1 + num_3)  # 10

3. 마이너스 인덱스

numbers = [2, 3, 5, 7, 11, 13]
      #   -4  ,  -3  ,  -2  ,  -1
names = ["윤수", "혜린", "태호", "영훈"]
      #    0  ,   1  ,   2  ,   3 

print(names[-1])
print(names[-2])

4.리스트 슬라이싱(list slicing)

numbers = [2, 3, 5, 7, 11, 13]
names = ["윤수", "혜린", "태호", "영훈"]

print(numbers[0:4])  #  인덱스 0부터 3까지 자르는 것
print(numbers[2:])   #  지정하지 않으면 마지막까지
print(numbers[:4])   #  처음부터 3까지
[2, 3, 5, 7]
[5, 7, 11, 13]
[2, 3, 5, 7]

5.리스트 요소 바꾸기

numbers = [2, 3, 5, 7, 11, 13]
names = ["윤수", "혜린", "태호", "영훈"]

numbers[0] = 7  # [0]인 2의 값을 7으로 변경 
print(numbers)  # [7, 3, 5, 7, 11, 13]으로 변경되어 출력

리스트 함수

1.len

: 리스트에 몇개의 값이 있는 지 알고 싶을때

numbers = []
print(len(numbers))   # 값이 없으므로 0 

2.append (추가 연산)

: 리스트에 값을 추가하고 싶을때, 가장 오른쪽에 값을 추가해줌

numbers = []
numbers.append(5)
numbers.append(8)  #  가장 오른쪽에 값을 추가해준다.
print(numbers)         #  [5, 8]
print(len(numbers))    #  2

3.insert (삽입 연산)

:원하는 위치에 값을 삽입하는 방법

counts = [2, 3, 5, 7 , 11, 13]
counts.insert(4, 37)  #  4자리에 값 37을 넣을거야
print(counts)         # [2, 3, 5, 7, 37, 11, 13]

4.del

: 값 삭제하기

counts = [2, 3, 5, 7 , 11, 13]
del count[3]
print(counts)         # [2, 3, 5, 11, 13]

리스트 정렬

1.sroted 정렬

#  오름차순
new_list = sorted(numbers)
print(new_list)

#  내림차순
new_list = sorted(numbers, reverse=True)
print(new_list)

print(numbers)  #  sorted는 기존의 함수를 건들이지 않는다.
[2, 3, 5, 7, 11, 13, 17, 19]
[19, 17, 13, 11, 7, 5, 3, 2]
[19, 13, 2, 5, 3, 11, 7, 17]

2.sort정렬

#  오름차순 
numbers.sort()  #  numbers 리스트 정렬 완료
print(numbers)

#  내림차순
numbers.sort(reverse=True)
print(numbers)
[2, 3, 5, 7, 11, 13, 17, 19]
[19, 17, 13, 11, 7, 5, 3, 2]

3.sorted vs sort 차이

# sorted : 기존 리스트는 건드리지 않고,정렬된 새로운 리스트를 리턴
# srot : 아무것도 리턴하지 않고, 기존 리스트를 정렬

리스트 실습

1.리스트의 원소를 모두 출력하는 프로그램을 작성. while 문과 리스트의 개념을 활용

<나의 답안>

greetings = ["안녕", "니하오", "곤니찌와", "올라", "싸와디캅", "헬로", "봉주르"]

i = 0
while i<=6:
    print(greetings[i])
    i += 1

<모범답안>

i = 0
while i < len(greetings):
    print(greetings[i])
    i += 1

*6 값이라는 고정값대신 len(greetings) 같은 일반화된 방식으로 쓰면, 더 안정적이고 확장성 있는 코드가 됩니다.

2.섭씨 계산기

<나의 답안>

# 화씨 온도에서 섭씨 온도로 바꿔 주는 함수
def fahrenheit_to_celsius(fahrenheit):
    c = round(((fahrenheit - 32) *5 ) / 9, 1)
    return(c)

temperature_list = [40, 15, 32, 64, -4, 11]
print("화씨 온도 리스트: {}".format(temperature_list))  # 화씨 온도 출력

# 리스트의 값들을 화씨에서 섭씨로 변환하는 코드
i = 0 
while i < len(temperature_list):
    temperature_list[i] = fahrenheit_to_celsius(temperature_list[i])
    i += 1
print("섭씨 온도 리스트: {}".format(temperature_list))  # 섭씨 온도 출력
화씨 온도 리스트: [40, 15, 32, 64, -4, 11]
섭씨 온도 리스트: [4.4, -9.4, 0.0, 17.8, -20.0, -11.7]

<모범 답안>

# 화씨 온도에서 섭씨 온도로 바꿔 주는 함수
def fahrenheit_to_celsius(fahrenheit):
    return (fahrenheit - 32) * 5 / 9

temperature_list = [40, 15, 32, 64, -4, 11]
print("화씨 온도 리스트: {}".format(temperature_list))  # 화씨 온도 출력

# 리스트의 값들을 화씨에서 섭씨로 변환하는 코드
i = 0
while i < len(temperature_list):
    temperature_list[i] = round(fahrenheit_to_celsius(temperature_list[i]), 1)
    i += 1
print("섭씨 온도 리스트: {}".format(temperature_list))  # 섭씨 온도 출력
화씨 온도 리스트: [40, 15, 32, 64, -4, 11]
섭씨 온도 리스트: [4.4, -9.4, 0.0, 17.8, -20.0, -11.7]

*함수에 굳이 변수 안쓰고 return값으로 받기, round 더 자연스럽게 쓰기

3.환전 서비스

<나의 답안> = <모범 답안과 동일 !! >

# 원화(₩)에서 달러($)로 변환하는 함수
def krw_to_usd(krw):
    return 0.001 * krw

# 달러($)에서 엔화(¥)로 변환하는 함수
def usd_to_jpy(usd):
    return (1000/8) * usd

prices = [34000, 13000, 5000, 21000, 1000, 2000, 8000, 3000]
print("한국 화폐: " + str(prices))    # 원화(₩)로 나열 
 
# prices를 원화(₩)에서 달러($)로 변환하기
i = 0
while i < len(prices):
    prices[i] = krw_to_usd(prices[i])
    i += 1 
print("미국 화폐: " + str(prices))    # 달러($)로 나열 

# prices를 달러($)에서 엔화(¥)으로 변환하기
i = 0
while i < len(prices):
    prices[i] = usd_to_jpy(prices[i])
    i += 1 
print("일본 화폐: " + str(prices))    # 엔화(¥)으로 나열
한국 화폐: [34000, 13000, 5000, 21000, 1000, 2000, 8000, 3000]
미국 화폐: [34.0, 13.0, 5.0, 21.0, 1.0, 2.0, 8.0, 3.0]
일본 화폐: [4250.0, 1625.0, 625.0, 2625.0, 125.0, 250.0, 1000.0, 375.0]

4.리스트 함수 활용하기

<나의 답안>

# 빈 리스트 만들기
numbers = []
print(numbers)

# numbers에 값들 추가
numbers.append(1)
numbers.append(7)
numbers.append(3)
numbers.append(6)
numbers.append(5)
numbers.append(2)
numbers.append(13)
numbers.append(14)
print(numbers)

# numbers에서 홀수 제거
i = 0
while i < len(numbers):
    if numbers[i] % 2 == 1:
        del numbers[i] 
    i += 1
print(numbers)

# numbers의 인덱스 0 자리에 20이라는 값 삽입
numbers.insert(0, 20)
print(numbers)

# numbers를 정렬해서 출력
numbers.sort()
print(numbers)

<모범 답안>

# 빈 리스트 만들기
numbers = []
print(numbers)

# numbers에 값들 추가
numbers.append(1)
numbers.append(7)
numbers.append(3)
numbers.append(6)
numbers.append(5)
numbers.append(2)
numbers.append(13)
numbers.append(14)
print(numbers)

# numbers에서 홀수 제거
i = 0
while i < len(numbers):
    if numbers[i] % 2 == 1:
        del numbers[i]
    else:                    # 홀수인 요소를 제거하고 나서는 i를 늘리면 안 됨
				i += 1               # i를 늘리면 요소 하나를 검토하지 않고 건너뛰게 됩니다.. 
print(numbers)

# numbers의 인덱스 0 자리에 20이라는 값 삽입
numbers.insert(0, 20)
print(numbers)

# numbers를 정렬해서 출력
numbers.sort()
print(numbers)

리스트 꿀팁

1.리스트에서 값의 존재 확인하기

1-1. 함수이용

# value가 some_list의 요소인지 확인
def in_list(some_list, value):       # (리스트명, 찾는 값)
    i = 0
    while i < len(some_list):
        # some_list에서 value를 찾으면 True를 리턴
        if some_list[i] == value:
            return True
        i = i + 1

    # 만약 some_list에서 value를 발견하지 못했으면 False를 리턴
    return False

# 테스트
primes = [2, 3, 5, 7, 11, 13, 17, 19, 23]
print(in_list(primes, 7))
print(in_list(primes, 12))
True
False

1-2. 내장되어있는 방법!! (키워드 in 사용)

primes = [2, 3, 5, 7, 11, 13, 17, 19, 23]
print(7 in primes)  # 찾는 값 in 리스트명
print(12 in primes)
True
False

1-3. 값이 없는지 확인하는 방법 (not in)

primes = [2, 3, 5, 7, 11, 13, 17, 19, 23]
print(7 not in primes)
print(12 not in primes)
False
True

2.리스트 안의 리스트(Nested List)

# 세 번의 시험을 보는 수업
grades = [[62, 75, 77], [78, 81, 86], [85, 91, 89]]

# 첫 번째 학생의 성적
print(grades[0])

# 세 번째 학생의 성적
print(grades[2])

# 첫 번째 학생의 첫 번째 시험 성적
print(grades[0][0])

# 세 번째 학생의 두 번째 시험 성적
print(grades[2][1])

# 첫 번째 시험의 평균
print((grades[0][0] + grades[1][0] + grades[2][0]) / 3)
[62, 75, 77]
[85, 91, 89]
62
91
75.0

3.reverse 메소드

: some_list.reverse()some_list의 원소들을 뒤집어진 순서로 배치

numbers = [5, 3, 7, 1]
numbers.reverse()
print(numbers)
[1, 7, 3, 5]

4. index 메소드

: me_list.index(x)some_list에서 x의 값을 갖고 있는 원소의 인덱스를 리턴

members = ["영훈", "윤수", "태호", "혜린"]
print(members.index("윤수"))
print(members.index("태호"))
1
2
profile
코린이의 개발공부

0개의 댓글