디지털미디어랩 머신러닝 여름캠프

2주차(1) : Python 기본 자료형 다루기 (List)

참고 자료

파이썬에서 여러개의 자료를 한 변수에 담기

  • 지금까지는 하나의 변수에 하나의 자료를 저장함.
  • 그러나 파이썬에서는 하나의 변수에 여러 개의 자료를 한꺼번에 저장하고 필요한 때에 꺼내 쓸 수도 있다.
  • 파이썬에서 여러 개의 자료를 저장하고 쓰는 데에는 다음과 같은 방법들이 있다.

    1. 리스트(List)
    2. 딕셔너리(Dictionary)
    3. 튜플(Tuple)
    4. 집합(Set)

1. 리스트(List)

  • 리스트 자료형은 여러개의 자료를 순서에 따라 저장할 수 있다.
  • 리스트의 자료형 변수는 다음과 같이 만든다.
    리스트변수 = [자료1, 자료2, 자료3]
In [ ]:
x = [11, 12, 13]
print(x)
  • 리스트도 다른 자료형과 비슷하게 더하기(+)연산이 가능하다.
  • 다른 사칙연산(-, *, /)은 없다.
In [ ]:
x = [1, 2, 3]
y = [2, 3, 4]
print(x+y)

인덱싱

  • 리스트 자료형 변수에서 특정한 자료를 꺼내려면 인덱싱(indexing)이라는 연산을 사용한다.
  • 인덱싱을 하려면 다음과 같이 대괄호(bracket)를 변수 이름 끝에 붙이고 그 안에 자료의 순서를 뜻하는 숫자를 넣는다.
리스트변수[인덱스]
In [ ]:
x = [5, 7, 9, 10, 12, 3, -5, -2]

print(x[0])
print(x[1])
print(x[0] + x[1])

슬라이싱

  • 리스트에서 자료를 하나만 가져오는 것이 아니라 특정 범위의 자료를 모두 가져오고 싶다면 슬라이싱(slicing)이라는 방법을 사용한다.
  • 슬라이싱은 콜론(:)이라는 기호를 사용하여 리스트의 자료 범위를 나타내는 연산이다.
  • from 부터 to 까지(미만)이다.
리스트변수[from:to]
리스트변수[from:to:step]
In [ ]:
x = [5, 7, 9, 10, 12, 3, -5, -2]

print(x[0:5])
print(x[:5])

print(x[2:8])
print(x[2:])

print(x)
print(x[:])

print(x[2:8:1])
print(x[2:8:2])
print(x[2:8:3])

역 인덱싱

  • 음수 인덱스를 사용하면 뒤에서부터 원소를 가리키게 된다.
  • 이때 가장 뒤의 원소는 0이 아니라 -1 이라는 인덱스를 사용한다.
In [ ]:
x = [5, 7, 9, 10, 12, 3, -5, -2]

print(x[-5:-2])
print(x[3:-1])
print(x[:-1])

리스트 자료형에서는 다음과 같은 기능을 제공한다.

1. x.append(y) : x에 y를 하나의 원소로 추가한다.
2. x.extend(y) : x에 y를 붙여서 확장시킨다.
3. x.remove(y) : x에 있는 y를 삭제한다.
4. x.sort() : x를 정렬한다.
5. y in x : x에 y가 있는지 검사한다.
6. max(x), min(x) : x의 원소 중 가장 큰 값과 작은 값을 반환.
7. sum(x) : x의 원소들을 모두 더해준다.
8. len(x) : x의 길이(수).

x.append(y)

In [ ]:
x = [1, 2, 3]
y = [2, 3, 4]
x.append(y)
print(x)
x.append(5)
print(x)

x.extend(y)

In [ ]:
x = [1, 2, 3]
y = [2, 3, 4]
x.extend(y)
print(x)

x.remove(y)

In [ ]:
x = [1, 2, 3]
x.remove(2)
print(x)

x.sort()

In [ ]:
x = [3, 5, 9, 4, 2, 6]
y = [3, 5, 9, 4, 2, 6]
x.sort()
y.sort(reverse = True)
print(x)
print(y)

y in x

In [ ]:
x = [3, 5, 9, 7, 6]
print(5 in x)
print(4 in x)

max(x), min(x), sum(x), len(x)

In [ ]:
x = [3, 5, 9, 7, 6]
print(max(x))
print(min(x))
print(sum(x))
print(len(x))

리스트와 반복문 활용

  • 반복문은 리스트 자료형 변수에 대해 여러가지 계산을 할 때 많이 사용된다.
  • 다음 코드에서 len() 명령어는 리스트 자료형 변수의 원소의 갯수를 구하는 명령어이다.
In [ ]:
a = [90, 85, 95, 80, 90, 100, 85, 75, 85, 80]

print("range(10)")
for i in range(10):
    print(a[i])
    
print("\nrange(len(a))")
for i in range(len(a)):
    print(a[i])
    
print("\n인덱싱하지 않고 직접 가져오기")
for item in a:
    print(item)

예를 들어 10번의 시험 성적을 담고 있는 a라는 변수가 있을 때 평균 성적은 다음과 같이 구할 수 있다

In [ ]:
scores = [90, 85, 95, 80, 90, 100, 85, 75, 85, 80]

total = 0
for score in scores:
    total = (total+score)
average = total/len(scores)

print(average)

리스트의 내장함수인 sum()을 이용하면 더 쉽게 구할 수 있다.

In [ ]:
a = [90, 85, 95, 80, 90, 100, 85, 75, 85, 80]
print(sum(a)/len(a))

리스트의 리스트

  • 리스트에 또 다른 리스트를 넣을 수도 있다.
In [ ]:
a = [ 85,  90,  20,  50,  60,  25,  30,  75,  40,  55 ]
b = [ 70, 100,  70,  70,  55,  75,  55,  60,  40,  45 ]
c = [ 25,  65,  15,  25,  20,   5,  60,  70,  35,  10 ]
d = [ 80,  45,  80,  40,  75,  35,  80,  55,  70,  90 ]
e = [ 35,  50,  75,  25,  35,  70,  65,  50,  70,  10 ]

X = [ a, b, c, d, e]

print(X)

print(X[2])
print(X[2][4])

연습1

  • 아래 학생들 점수의 전체 평균을 구해보자.
1반 : 85, 90, 20, 50, 60, 25, 30, 75, 40, 55
2반 : 70, 100, 70, 70, 55, 75, 55, 60, 40, 45
3반 : 25, 65, 15, 25, 20, 5, 60, 70, 35, 10
4반 : 80, 45, 80, 40, 75, 35, 80, 55, 70, 90
5반 : 35, 50, 75, 25, 35, 70, 65, 50, 70, 10