본문 바로가기

[부트캠프] IT 코딩 부트캠프 후기/[Let's TIL😶‍🌫️] FastCampus

[Let's TIL✍️] 초격차 패키지 (Python web) _ PART 1. 제어문 : 리스트 자료형과 실습

오늘은 제어문의 '리스트' 자료형 부분을 배운다.



CH 05. 제어문 

02. 리스트 자료형

 


학습목표

- 리스트를 사용하는 이유 
- 리스트 만드는 방법 
- 데이터 접근하기 
- 데이터 추가, 수정, 삭제
- 리스트 슬라이싱
- 리스트 길이, 리스트 정렬



리스트를 사용하는 이유?


ex. 10개의 동물 이름 데이터를 저장하는 상황이라면
animai1 = "사자" ... animal10 = "강아지" 라는 10개의 변수를 만들었다고 하자

 

그런데 만약 동물이 100, 1000으로 늘어난다면 ?
이럴 때 새로운 자료형이 필요해진다. 

이를 리스트로 만들면 한 줄에 천개, 만개를 저장 가능하다!

animals = ["사자", "호랑이" ... "강아지"]

 


이때 [] 대괄호 안에 그 안에 데이터는 콤마(,)로 구분
> 데이터는 문자열, 숫자형, 불린형이든 다 넣어줄 수 있다. 



즉,
리스트명 = [데이터, 데이터, ... , 데이터] 

이렇게 만들어 줄 수 있다.

 

이때 반드시 데이터는 안 넣어도 된다.

리스트 = [] 


이렇게 껍데기만 있는 빈 리스트 자료형을 만들 수 있다. 


 


데이터에 접근하기

 

인덱스라는 것을 사용해서 리스트의 순서를 알 수 있는데 
이때 0 부터 시작한다는 것이 중요하다.

 

만약 animals = ["사자", "호랑이" ... "강아지"] 라는 리스트에서 
첫 번째 데이터 '사자'를 가져오고 싶다면?  (리스트 + 인덱스 번호)

 

animals[0]
 

 



데이터 조작하기


데이터 추가   :    리스트.append(데이터)
데이터 할당   :    리스트[인덱스] = 데이터
데이터 삭제   :    del 리스트[인덱스]



예시


a = [1,2,3] 

1) 추가    :  a.append(4)     > 결과 = [1,2,3,4]
2) 할당    :   a[0] = 0               > 결과 = [0,2,3,4]
3) 삭제    :   del a[1]                  > 결과 = [0,3,4]




데이터 조작하기


슬라이싱 : 리스트 [시작:끝 +1]
(특정 리스트의 부분을 뽑아오는 것)

리스트 길이  :   len(리스트)
리스트 정렬   :   리스트.sort()

 


예시

 

b = [3,4,2,1]


1) 슬라이싱  :   b[1:3]          > 결과 [4,2] 
2) 길이     :  len(b)                       > 결과   4
3) 정렬    :  b.sort()        > 결과 [1,2,3,4]  오름차순으로 정렬 




실습



# 1. 리스트 만들기
# - 데이터가 있는 리스트
animals = ["가물치", "벼메뚜기", "비단뱀", "도롱뇽"]

# - 데이터가 없는 리스트
empty = []

# 2. 리스트 조작하기

# - 데이터 접근하기
# 인덱스는 0 부터 시작함!
print(animals[2])
print(animals[-1])     # -1은 가장 마지막 데이터 반환

# - 데이터 추가하기
animals.append("고라니")
print(animals)

# - 데이터 할당하기
animals[1] = "청개구리"
print(animals)

# - 데이터 삭제하기
del animals[0]
print(animals)

# - 리스트 슬라이싱
print(animals[1:3])
print(animals[:])    #전체를 가져오라는 뜻
print(animals[:3])   #시작 인덱스 생략 = 자동으로 0 값 들어감
print(animals[1:])   #마지막 생략 = 끝까지

# - 리스트 길이
print(len(animals))

# - 리스트 정렬 
animals.sort()
print(animals)

# 내림차순으로 정렬하고 싶다면?
animals.sort(reverse=True)
print(animals)

 

 

 



리스트 실습 문제 

실습 문제 5.2.1

다음은 패스트 고등학교 2학년 3반 1번부터 5번까지의 1분간 팔굽혀펴기 개수이다.
데이터는 리스트에 저장되어 있다. 각 문행을 실행한 결과를 출력해보자.


result = [33, 40, 12, 63, 52]
인덱스는 0,1,2,3,4
 
문항 1 append
문항 2 데이터 변경
문항 3 슬라이싱 3-6
문항 4 오름차순 정렬 sort




실습 문제 5.2.2


턱걸이 평균 측정 프로그램 
1) 턱걸이를 저장할 빈 리스트 만들기
2) 일주일 간의 턱걸이 횟수를 입력 받아 리스트에 저장  (이때 append 이용하기)
3) 리스트에 저장된 평균을 구해 출력 (출력은 정수형이니 int 붙여주자)


exercise = []
number = [] 에서 계산한 걸 어떻게 리스트로 넘겨줄까?
return는 함수의 결괏값을 돌려주는 명령어
input 사용하기
평균 구하기 = 연산 / 



exercise = []

1day = int(input("1일차 턱걸이 횟수 >>>"))
2day = int(input("2일차 턱걸이 횟수 >>>"))
3day = int(input("3일차 턱걸이 횟수 >>>"))
4day = int(input("4일차 턱걸이 횟수 >>>"))
5day = int(input("5일차 턱걸이 횟수 >>>"))
6day = int(input("6일차 턱걸이 횟수 >>>"))
7day = int(input("7일차 턱걸이 횟수 >>>"))

total = day1 + day2 + day3 + day4 + day5 + day6 + day7
avg = total/7

exercise.append(total)



일단, 변수 앞에 숫자가 오면 안되는건 확실히 알았다.

또한 구글링을 통해 리스트로 값 받아오기를 알았다.
https://art-coding3.tistory.com/6
>> 일반적으로 입력받은 것들을 문자열로 받아들인다.  (그래서 int가 필요함)
1. list1이라는 빈 리스트를 생성한다.  (나는 exercise)
2. input을 통해 사용자가 값을 입력하게 하고 이를 s라는 변수에 저장한다 (total)
3. s에 저장된 변수를 append를 써 list1에 넣는다 (!!!)
4. print를 통해 리스트를 출력한다.

일단 성공한 줄 알았는데, 출력해보니 154라는 값 즉 전체를 더한 값이 나왔다.
avg에서 값이 정상적으로 나온 것은 그냥 total의 avg를 계산한 것이다. 
풀이를 보자.

결과가 22.0 으로 실수형으로 나오기 때문에, 정수형으로 나오게 하려면?
print(int(avg)) 

이렇게 avg앞에도 int 로 감싸기

 


오늘의 소감✍️

 

일정을 무리해서 잡으면 안되겠다고 또 다짐하는 이번달...

그래도 하고싶은 것도 많고 해야하는 것도 많은 이 시기를 즐기고 

다만 필수적인 부분과 그렇지 않은 부분에 대한 구분은 필요하다. 

 

갑작스레 아이폰 #ios16 업데이트 이후

음성 메모 (voice memo) 16.2 테라로 잡히는 기적의 오류로 

며칠을 해결해야한 시간적 부분은 아쉬움이 남기는 하지만,

#아이폰 재설정 이라는 최후의 보루가 있어서 

어찌저찌 해결되었다. 

다만 16테라 그 친구는 여전히 잡히는 중이라,

다음 업데이트를 기다리거나 공장초기화 밖엔 일단 방법이 없어 보인다.