본문 바로가기

Programming/python

04.리스트

학습내용

1. 리스트와 튜플

2. 리스트 만들기, 데이터 쓰기, 읽기, 변경, 삭제


학습목표

- 리스트와 튜플을 구분합니다.

- 리스트 데이터의 CRUD에 대해 알아봅니다.


사전퀴즈

1. 리스틑 순서가 있는 데이터 구조이다. ( X )

  : 파이썬에서 리스트는 [] 기호를 사용하며 아이템으로 구성되어 있고, 각 아이템들은 자동으로 부여된 인덱스(오프셋)을 가진다.

2. 리스트의 아이템은 변경이 불가능하다. (X)

  : 리스트와 스트링은 모두 순서가 있는 시퀀스 타입인데 리스트는 변경가능하고 스트링은 변경 불가능하다.


리스트

- 파이썬에서 리스트는 원하는 모든 데이터를 담는 컨테이너

  : Read-Only 리스트 - 튜플(Tuples)

  : 위 두가지 모두 시퀀스 구조의 컨테이너이다.

# an empty list

empty = []

# list of numbers

nums = [10, 20, 30]

# list of strings

words = [cheerio', 'cheers']

# list of mixed items

anything = [10, 'hello']


- 리스트의 아이템은 0부터 시작하는 인덱스(또는 오프셋)로 순서를 가진다.

  : 오프셋으로 데이터를 추출 또는 변경이 가능

  : insert(offset, data) 함수를 통해 데이터 변경도 가능

  : append(data) 함수로 데이터를 마지막에 추가


- 오프셋으로 아이템 얻기

>>> address = ['seoul', 'seocho, 'woomyun']

>>> address[0]

'seoul'

>>> address[-2]

'seocho'


리스트는 CRUD 가능


- 오프셋으로 아이템 바꾸기

>>> phone_number = ['010', '1234', '4567']

>>> phone_number[1] = '2346'

>>> phone_number

['010','2346','4567]


- 아이템 삭제

  : 리스트에서 아이템 삭제는 값과 인덱스 모두 가능하다.

slang = ['cheerio', 'pip pip', 'smashing', 'cheeky']

slang.remove('cheeky')

del slang[3]

print(slang)

sublist로 삭제도 가능


- 슬라이스로 아이템 추출

  : 슬라이스로 리스트의 서브시퀀스를 추출할  있다.

>>> address = ['seoul', 'seocho', 'woomyun']

>> address[0:2]

['seou;', 'seocho']


- 리스트에 아이템 추가 : append()

>>> address.append('123-4')

['seoul', 'seocho', 'woomyun', '123-4']


- 오프셋과 insert()로 항목 추가

>>> address.insert(3, 'san')

>>> address

['seoul', 'seocho', 'woomyun', 'san', '123-4']


- 다른 데이터 타이을 리스트로 변환 : list()

>>> list('cat')

['c','a','t']


- 문자열을 구분자로 나누어서 리스트로 변환 : split()

>>> birthday = '1985/2/5'

>>> birthday.split('/')

['1985','2','5']


- 값으로 오프셋 찾기 : index()

>>> address = ['seoul', 'seocho', 'woomyun', '123-4']

>>> address.index('seocho')

1


- 멤버십 확인 : in

  : 리스트의 멤버(아이템) 인지 확인하려면 in을 사용

>>> address = ['seoul', 'seocho', 'woomyun', '123-4']

>>> 'seocho in address
True
>>> 'gangnam' in address
False

- 값 세기 : count()
  : 리스트에 특정 값이 얼마나 있는지 세기 위해서 count() 함수 사용
>>> address.count('seocho')
1
>>> address.count('gangnam')
0

튜플(Tuple)
- 튜플(Tuple)
# 튜플 생성
empty_tuple = ()
colors = 'red', 'green', 'blue', 'yellow' #정의할 땐 괄호 붙이지 않음

# 여러 볏에 값을 할당 할 수 있음
a, b, c, d, = colors # aka 'Tuple unpacking'

#리스트를 튜플로 변환
>>> lang_list = ['swift' 'javascript', 'python']
>>> tuple(lang_list)
('swift', 'javascript', 'python')


튜플 <-> 리스트 가능

list(튜플) or tuple(리스트)


- 튜플(tuples)

  : 튜플은 더 적은 공간을 사용한다.       리스트 보다 퍼포먼스가 좋다.

  : 실수로 튜플의 항목이 손상될 염려가 없다.

  : 함수의 파라미터들은 튜플로 전달된다.


연습문제

- 색상 이름을 아이템으로 가지는 리스트를 작성하세요(색상 최소 5개 이상)

1. 리스트의 아이템 개수를 출력하세요. len()

2. 리스트의 가장 마지막 아이템의 첫 번째 글자를 대문자로 변경해서 출력하세요. [-1]

colors = ['red', 'yellow', 'blue', 'green', 'orange']

how_many = len(colors)

print(how_many)

the_last = colors[-1]

print(the_last)

the_last = the_last.capitalize()

print(the_last)



Quiz

1. 파이썬 리스트 형태로 맞지 않는 것은?

  ④ my_dict = {'a', 'b', 'c', 'd'}

  리스트를 나타낼 때는 []를 사용한다.

2. 다음 중 리스트를 설명하는 내용중 잘못된 것은?

  ④ 리스트와 튜플중에서 속도는 리스트가 더 빠르다.

  튜플은 읽기전용인 대신에 속도가 리스트에 비해 빠르다.

3. 다음중 리스트 관련 함수에 대한 설명 중 잘못된 것은?

  ④ to_list() 함수를 사용하면 다른 데이터 타입을 리스트로 변환할 수 있다.

  list() 함수로 다른 타입을 리스트로 변환한다. 비슷한 함수로 str(), int(), float() 등이 있다.


Summary

- 리스트와 튜플은 순서 있는 데이터를 저장하는 데이터 구조이다.

- 리스트 관련 함수를 이용해서 리스트를 조작할 수 있다.

- 튜플은 아이템 수정이 불가한 리스트이며, 속도가 빠르다.