Charles R. Severance (찰스 R. 세브란스)의 <모두를 위한 파이썬(PY4E)> 수강 내용
https://www.boostcourse.org/cs122/joinLectures/284901
학습목표
리스트의 개념에 대해서 이해하고 개별 값에 대해 접근하고 내장 함수를 활용할 수 있다.
핵심키워드
- 리스트
- 내장 함수
프로그래밍
통상 프로그래밍은 알고리즘과 자료구조로 나눌 수가 있다. 알고리즘이 특정 문제를 해결 하기 위한 규칙 또는 단계라면, 자료구조는 컴퓨터 내에서 자료를 구조화하는 특별한 방식이라고 생각할 수 있다.
무엇이 컬랙션이 아닌가?
컬랙션이 무엇인지 알기 위해 우리는 컬랙션이 아닌 것을 알아야 한다. 하나의 변수에 새로운 값을 할당하게 되면 기존의 값은 사라지고 그 자리에 대체하게 된다. 즉, 하나의 변수에는 하나의 값만 할당하는 것을 우리는 배웠다. 하나의 변수에 여러 값을 넣는 것이 가능하도록 하는 것이 컬랙션이다.
리스트(List)
리스트는 컬랙션의 한 종류이다.
1. 리스트의 각 항목들은 '[]'로 둘러싸게 된다.
2. 리스트 내의 항목들에 대한 구분은 ,(콤마)로 구분한다.
3. 리스트 내에 또 다른 리스트를 내포할 수 있다.
4. 비어 있는 리스트를 만들 수 있다.
5. 리스트의 항목들에 인덱스 값으로 접근할 수 있다.
6. 리스트의 항목들은 바뀔 수 있다.
friends=['Joseph','Glenn','Sally']
carryon=['scocks','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()
리스트에서도 해당 리스트가 몇개의 항목을 가지고 있는지를 len() 함수를 통해서 확인할 수 있다.
friends=['Joseph','Glenn','Sally']
print(len(friends))
# 3으로 출력
range()
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]로 출력
dir() 메소드
특정 타입에서 사용할 수 있는 메소드의 목록들을 볼 수 있는 함수도 있다.
x=list()
print(dir(x))
리스트 만들기
빈 리스트 만들기 - 항목 추가하기 - 항목 정렬하기 - in을 활용해 'Glenn'이 친구 목록에 있는지 확인하기
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 there words'
stuff=abc.split()
print(stuff)
# ['With','there','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.marguard','uct.ac.za']가 출력
print(adress[1])
# uct.ac.za가 출력
실습
exercise 8
han = open('mbox-short.txt')
for line in han:
line = line.rstrip()
wds = line.split()
# guardian a bit stronger
if len(wds) < 3 :
continue
if wds[0] != 'From' :
continue
print(wds[2])
han = open('mbox-short.txt')
for line in han:
line = line.rstrip()
wds = line.split()
# guardian in a compound statement
if len(wds) < 3 or wds[0] != 'From' :
continue
print(wds[2])