list 복습!
메모리에 데이터를 할당(저장)하는 방법은 2가지가 있다.
1. 변수
2. 리스트
변수는 지금 껏 직접 변수명과 값을 입력해주어야 했다. 하지만 입력해야할 변수들이 100개라면 변수명을 일일히 나열할 수는 없을 것이다. 그래서 사용하는 것이 리스트!
b=[1, 2, 3, 4, 5]
print(b[0])
print(b[1])
print(b[2])
print(b[3])
print(b[4])
out)
1
2
3
4
5
리스트는 위의 예제처럼 칸을 여러개로 나누어 여러개의 변수를 담는 호텔이라고 생각하면 된다.
리스트의 앞에서부터 우리는 0호, 1호, 2호, 3호 ... 이런 식으로 이름을 붙일 것이다.
즉, b= [1, 2, 3, 4, 5] 에서 0호의 값은 1, 1호의 값은 2, 4호의 값은 5가 된다.
리스트를 이용해 변수 값을 잡는 것이 훨씬 수훨해졌다.
그럼 리스트를 좀 더 간략하게 해보자.
b=[0,1,2,3,4] 를 for i in range(0, 5) 로 나타낼 수 있다.
#range(시작, 끝값, 간격)
for i in range(0,5): # [0,1,2,3,4]
print(i)
out)
0
1
2
3
4
즉, 다시 정리하면 list는 집합 데이터를 효율적으로 사용할 수 있다.
예를 들어 100개의 점수들의 합을 구할 때, 리스트를 사용하지 않는 다면
s1 = 90
s2=80
s3=70
…
s100=80
이라고 직접 변수의 이름과 값들을 잡아서
sum = s1 +s2+ s3+ … +s100
을 진행해야하지만
리스트 사용 한다면 (for을 같이 사용하는게 좋겠쥬?)
score = [89,67,5,34,65,78,34,....80]
for i in score:
sum += i
로 간단하게 끝낼 수 있다.
list의 크기
리스트의 크기란 방의 개수라고 생각하자.
a=[1,2,3] #리스트 크기: 방의 개수. 즉, a의 크기는 3
b=['가', '나', '다','라']
c=[12.24, 34.45]
d=[True, True, False]
list의 요소
리스트에 저장된 값 하나하나를 요소라고 한다.
a=[1,2,3]에서 요소는 1, 2, 3 이다 (수학적으로 얘기하면 원소!)
또한, 하나의 리스트에 다양한 타입의 값을 담을 수 있다.
(다른 언어에는 타입 제약이 있음.
int a = 10 이라고하면 a는 무조건 int값만 들어갈 수 있지만
파이썬에서는 a =10, a= 'asdf' 라고 해도 문제가 안생긴다.)
a=[1,2,3]
print(a[0]) #리스트의 0번방 값 출력
print(a[1])
print(a[2])
print()
for i in range(0, 3): #위의 에제를 좀 더 간단히
print(a[i])
print()
for i in a:
print(i) #더 간단히!!
out) 모든 결과가
1
2
3
list의 index
index는 방 번호라고 생각하자!
a=[1,2,3]에서 0번 인덱스의 요소는 1, 1번 인덱스의 요소는 2, 2번 인덱스의 요소는 3.
또는
a[0] = 1
a[1] = 2
a[2] = 3
이라고 할 수 있다.
*참고로 인덱스는 0번부터 시작한다. (앞서 리스트의 방 번호는 0번부터 시작이라고 했었음)
만약
print(a[3])
를 한다면 에러가 뜬다. 범위 밖의 인덱스이기 때문에 없는 방에 대한 접근이다.
(현재 a는 방이 0~2호까지만 존재)
파이썬에서는 인덱스 추가가 불가능. (C에서는 가능)
그래서
a.append(4) #방을 확장. 리모델링 한것! 확장한 방에 값 저장.
#빈 리스트 생성
e = []
f = list() #리스트 함수로 생성
e = []
f = list()
e.append('aaa') #빈 리스트에 aaa라는 문자열 추가
f.append('bbb')
print(e)
print(f)
out)
['aaa']
['bbb']
b=['aaa','bbb','ccc']
print('b의 길이:', len(b)) #len: 길이
print(len('asdfㄹㅇㄴㄹㅇ'))
for i in range(0, len(b)):
print(b[i], end=',') #인덱스로 접근
for i in b: #요소로 접근
print(i, end=',')
out)
b의 길이: 3
9
aaa,bbb,ccc,
aaa,bbb,ccc,
Q. 숫자 10개를 입력받아서 리스트에 저장한 뒤 출력하라.
#sol1
data=[0]*10 #리스트를 0으로 초기화한 방 10칸 생성
for i in range(0,len(data)):
data[i] = int(input('num:'))
for i in data:
print(i, end=' ')
#sol2
data2=[]
for i in range(0,10):
data2.append(int(input('num:')))
print(data2)
out)
num:1
num:4
num:6
num:9
num:3
num:5
num:4
num:9
num:7
num:52
1 4 6 9 3 5 4 9 7 52
Q. 5명 학생의 점수를 입력받아 총점과 평균을 출력하라.
#sol1
data3=[]
sum = 0
for i in range(0, 5):
data3.append(int(input('점수를 입력하시오:')))
for i in data3:
sum += i
avg = sum/5
print('총점:', sum, '평균:', avg)
#sol2
data3=[0]*5 # data=[0,0,0,0,0]
sum = 0
for i in range(0, 5):
data3[i] = int(input('점수'))
sum += data3[i]
avg = sum / 5
print('총점:', sum, '평균:', avg)
#sum함수 사용하면
data3=[]
for i in range(0, 5):
data3.append(int(input('점수를 입력하시오:')))
s = sum(data3)
avg = s/5
print('총점:', s, '평균:', avg)
out)
점수를 입력하시오:20 점수를 입력하시오:64 점수를 입력하시오:68 점수를 입력하시오:12 점수를 입력하시오:97 총점: 261 평균: 52.2 |
'파이썬이 제일 쉽다면서요' 카테고리의 다른 글
python #연습문제 (0) | 2021.06.02 |
---|---|
python #list (2) (0) | 2021.06.02 |
python #피카츄게임? (0) | 2021.06.01 |
python #연습문제 (0) | 2021.06.01 |
python #반복문 : while, for (0) | 2021.06.01 |