지금까지 우리는 하나의 값만을 할당하는 변수에 대해서 알아 보았다. 하지만 필요에 따라서 하나의 변수에 많은 데이터를 넣을 수도 있다. 파이썬에서는 이를 리스트라고 한다.
리스트의 개념에 대해서 이해하고 개별 값에 대해 접근하고 내장 함수를 활용할 수 있다.
통상 프로그래밍은 알고리즘과 자료구조로 나눌 수가 있다. 알고리즘이 특정 문제를 해결하기 위한 규칙 또는 단계라면, 자료구조는 컴퓨터내에서 자료를 구조화 하는 특별한 방식이라고 생각할 수 있다.
컬렉션이 무엇인지 알기 위해 우리는 컬렉션이 아닌 것을 알아야 한다. 하나의 변수에 새로운 값을 할당하게 되면 기존의 값은 사라지고 그 자리에 대체하게 된다. 즉, 하나의 변수에는 하나의 값만 할당하는 것을 우리는 배웠다. 하나의 변수에 여러 값을 넣는 것이 가능하도록 하는 것이 컬렉션이다.
리스트는 컬렉션의 한 종류이다.
[]
로 둘러싸게 된다.,
로 구분한다.friends = ['Joseph', 'Glenn', 'Sally']
carryon = ['socks', 'shirt', 'perfume']
colors = ['red', ['yellow','blue'], 'black']
emptyList = []
print(colors[0])
# red라고 출력됨
lotto = [2, 14, 26, 41, 63]
print(lotto)
# [2, 14, 26, 41, 63]이 출력됨
lotto[2] = 28
print(lotto)
# [2, 14, 28, 41, 63]이 출력됨`
리스트에서도 해당 리스트가 몇 개의 항목을 가지고 있는지를 len()
함수를 통해서 확인할 수 있다.
friends = ['Joseph', ' Glenn', 'Sally']
print(len(friends))
# 3으로 출력됨
range()
함수는 인자로 전달되는 값에 따라서 숫자로 이루어진 리스트를 반환하게 된다.
for i in range(5):
print(i)
# 0
# 1
# 2
# 3
# 4 로 출력된다.
계속해서 리스트와 관련된 내장 함수들을 살펴보도록 하자.
리스트를 이해하고 내장 함수를 활용해 리스트를 만들 수 있다.
+
연산자를 활용해서 서로 다른 리스트를 더 할 수 있다.a = [1, 2, 3]
b = [4, 5, 6]
c = a + b
print(c)
# [1, 2, 3, 4, 5, 6]로 출력된다.
:
를 이용해 자를 수가 있다. 여기서 중요한 것은 예를 들어 t[1:3]
과 같은 경우 3번째 인덱스에 해당하는 항목은 포함되지 않는다는 것이다.t = [9, 41, 12, 3, 74, 15]
print(t[1:3])
print(t[:4])
print(t[3:])
print(t[:])
# [41, 12]
# [9, 41, 12, 3]
# [3, 74, 15]
# [9, 41, 12, 3, 74, 15] 로 출력된다.
x = list()
print(dir(x))
friends = list()
friends.append('Joseph')
friends.append('Glenn')
friends.append('Sally')
print(friends)
# ['Joseph', 'Glenn', 'Sally']
friends.sort()
print(friends)
# ['Glenn', 'Joseph', 'Sally']
print('Glenn' in friends)
# True로 출력된다.
기본적인 메소드를 활용해서 생각보다 많은 일들을 할 수 있다는 것을 확인할 수 있다.
리스트의 개념을 이해하고 기존의 데이터에서 email만 추출할 수 있다.
문자열과 리스트는 잘 어울려 사용된다.
abc = 'With three words'
stuff = abc.split()
print(stuff)
# ['With', 'three', 'words'] 로 출력된다.
명시적으로 구분자를 넣어주지 않으면, 빈칸을 구분자로 인지하고 나누게 된다.
words2 = 'first;second;third'
stuff2 = words2.split()
print(stuff2)
# ['first;second;third']
stuff2 = words2.split(';')
print(stuff2)
# ['first', 'second', 'third']
지금까지 배운 메소드와 자료구조를 활용하면 우리가 원하는 값만을 추출할 수가 있다.
line = 'From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008'
# line 에 uct.ac.za만 추출하는 방법을 찾아 보도록 하자.
words = line.split()
# words는 해당 라인을 빈칸을 구분자로 하여 리스트로 저장된다.
print(words[1])
# stephen.marquard@uct.ac.za이 출력된다.
email = words[1]
address = email.split('@')
print(address)
# ['stephen.marquard', 'uct.ac.za'] 가 출력된다.
print(address[1])
# uct.ac.za가 출력된다.