[Python] 리스트(list) 자료형

Jeongyun Heo·2021년 1월 4일
0

Python

목록 보기
17/36
post-thumbnail

점프 투 파이썬 02-3 리스트 자료형
https://wikidocs.net/14

Python Documentation
https://docs.python.org/ko/3/library/stdtypes.html#list

📔  객체란 파이썬에서 사용되는 모든 자료형을 말한다.


class list([iterable])

mutable sequences (가변 시퀀스)

리스트는 공통과 가변 시퀀스 연산들을 모두 구현합니다.

리스트는 여러 가지 방법으로 만들 수 있다.

대괄호[]로 감싸 주고 각 요소는 콤마,로 구분해 준다.

리스트명 = [요소1, 요소2, 요소3, ...]

a = [] # 대괄호를 사용하여 빈 리스트 만들기
[a], [a, b, c] # 대괄호를 사용하여 쉼표로 항목 구분하기
a = list() # list 함수 사용해서 빈 리스트 만들기

list(iterable)
>>> s = list('abc') # 문자열 하나씩 나눠서 리스트로 만들어줌
>>> s
['a', 'b', 'c']

>>> s = list((1, 2, 3)) # 튜플을 리스트로 만들어줌
>>> s
[1, 2, 3]

a처럼 비어 있는 리스트도 만들 수 있다.

리스트 안에는 어떠한 자료형도 포함시킬 수 있다.

리스트의 인덱싱

리스트 인덱싱 가능

인덱싱으로 불러온 요소가 숫자면 연산 가능

a[-1]은 문자열에서와 마찬가지로 리스트 a의 마지막 요솟값을 말한다.

리스트 안에 있는 리스트 인덱싱

>>> a = [1, 2, 3, ['a', 'b', 'c']]

>>> a[-1][0]
'a'

a[-1]['a', 'b', 'c'] 리스트이고
이 리스트에서 한 번 더 인덱싱 ['a', 'b', 'c'] [0] 하는 꼴

삼중 리스트에서 인덱싱하기

>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]

>>> a[2][2][0]
'Life'

리스트의 슬라이싱

리스트 슬라이싱 가능

>>> a = [1, 2, 3, 4, 5]

>>> a[0:2]  # a[0]이상 a[2]미만
[1, 2]

😎 마지막에 끝 번호에 해당하는 값은 포함되지 않는다.

시작번호나 끝번호는 생략 가능하다.

  • 시작번호 생략시 [0]부터 시작
  • 끝번호 생략시 시작 번호부터 끝까지[-1]
  • 둘 다 생략시 처음부터 끝까지

중첩된 리스트에서 슬라이싱하기

>>> a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]

>>> a[2:5]
[3, ['a', 'b', 'c'], 4]

>>> a[3][:]
['a', 'b', 'c']

리스트 연산하기

리스트 더하기(+)

더하기 기호 +로 간단하게 리스트 2개 합치기

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]

>>> a + b
[1, 2, 3, 4, 5, 6]

2개의 리스트를 합쳤다.

리스트 반복하기(*)

>>> a = [1, 2, 3]

>>> a * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]

리스트가 세 번 반복되어 새로운 리스트를 만들어낸다.

리스트 길이구하기 (요소 개수 구하기)

len 함수 사용

>>> a = [1, 2, 3]

>>> len(a)
3

초보자가 범하기 쉬운 리스트 연산 오류

정수와 문자열은 서로 더할 수 없다.
정수끼리 더하거나 문자열끼리 더하기 가능
int 함수 이용해서 정수로 바꿔주거나, str 함수 이용해서 문자열로 바꿔주기

리스트의 수정과 삭제

mutable sequences (가변 시퀀스)

리스트는 값을 수정하거나 삭제할 수 있다.

리스트에서 값 수정하기

>>> a = [1, 2, 3]

>>> a[0] = 4

>>> a
[4, 2, 3]

del 함수 사용해 리스트 요소 삭제하기

>>> a = [1, 2, 3]

>>> del a[0]

>>> a
[2, 3]

슬라이싱 기법을 사용하여 삭제 가능하다.

>>> a = [1, 2, 3, 4, 5]

>>> del a[:2]

>>> a
[3, 4, 5]

리스트 요소 제거(remove)

가변 시퀀스 타입 함수

리스트 변수 이름 뒤에 .를 붙여서 사용

해당 값 중에서 첫 번째로 나오는 값을 제거한다.

>>> a = [1, 2, 3, 1, 2, 3]

>>> a.remove(3) # 첫 번째로 나오는 3 제거

>>> a
[1, 2, 1, 2, 3]

리스트 해당 요소 돌려주고 삭제(pop)

가변 시퀀스 타입 함수

리스트 변수 이름 뒤에 .를 붙여서 사용

.pop() 괄호 안에 아무것도 입력 안 하면 맨 마지막 요소 삭제함

>>> a = [1, 2, 3, 4, 5]

>>> a.pop()  # 괄호 안에 아무것도 입력 안 하면 기본값 -1로 실행
5

>>> a
[1, 2, 3, 4]

pop(i) 시퀀스의 i번째 요소를 돌려주고 시퀀스에서 그 요소는 삭제한다.

i의 기본값이 -1이라서 i 입력 안 하면 기본적으로 마지막 항목이 제거되고 반환된다.

>>> a = [1, 2, 3, 4, 5]

>>> a.pop(0)  # a[0] 삭제하고 리스트에서 제거
1

>>> a
[2, 3, 4, 5]

리스트 관련 함수들

리스트 변수 이름 뒤에 .를 붙여서 사용

리스트 맨 마지막에 요소 추가(append)

리스트 안에는 어떤 자료형도 추가할 수 있다.

>>> a = [1, 2, 3]

>>> a.append(4)

>>> a
[1, 2, 3, 4]

>>> a.append([5,6]) # 리스트에 리스트 추가

>>> a
[1, 2, 3, 4, [5, 6]]

리스트 오름차순 정렬(sort)

오름차순 정렬

>>> a = [1, 4, 3, 2]

>>> a.sort()

>>> a
[1, 2, 3, 4]
>>> a = ['b', 'a', 'd', 'c']

>>> a.sort()

>>> a
['a', 'b', 'c', 'd']

리스트 현재 순서에서 그대로 뒤집기(reverse)

그냥 원래 순서에서 그대로 뒤집는 것 뿐
내림차순으로 정렬해주는 거 아님

>>> a = ['b', 'a', 'd', 'c']

>>> a.reverse()

>>> a
['c', 'd', 'a', 'b']

입력한 값의 위치 반환(index)

리스트에 해당 값이 있으면 그 값의 위치를 돌려준다.

해당 값 없으면 오류 남

>>> a = ['a', 'b', 'c', 'd']

>>> a.index('b')
1  # 파이썬은 0부터 센다.
>>> 
>>> a = ['a', 'b', 'c', 'd']

>>> a.index('e') # 리스트에 없는 거 찾아서 오류 남
Traceback (most recent call last):
  File "<pyshell#85>", line 1, in <module>
    a.index('e')
ValueError: 'e' is not in list

리스트 n번째 위치에 입력한 요소 삽입(insert)

>>> a = ['a', 'b', 'c', 'd']

>>> a.insert(0, 'A')

>>> a
['A', 'a', 'b', 'c', 'd']

리스트에 포함된 요소 x의 개수 세기(count)

리스트 안에 x가 몇 개 있는지 조사하여 그 개수를 돌려주는 함수

>>> a = ['a', 'b', 'b', 'b']

>>> a.count('b')
3       # 리스트에 'b'가 3개 들어 있다.

리스트에 리스트 더해서 확장(extend)

.extend() 인수로 리스트만 입력할 수 있다.

>>> a = ['a', 'b', 'c']

>>> a.extend(['d', 'e'])

>>> a
['a', 'b', 'c', 'd', 'e']

>>> b = ['f']

>>> a.extend(b)  # b도 리스트여서 가능

>>> a
['a', 'b', 'c', 'd', 'e', 'f']

a.extend(['d', 'e']) 👈 이거는 리스트 연산 더하기랑 같은 거임
a = a + ['d', 'e'] or a += ['d', 'e']

0개의 댓글