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

+ Recent posts