본문 바로가기

파이썬 기초

[파이썬 기초] python 리스트(List) 이해하기

python list

파이썬 리스트(list) 기초 이해하기

리스트를 연결하고 반복할 수 있는 연산자, 리스트에서 요소를 추가하고 제거하는 방법, 그리고 리스트에서 특정 요소의 인덱스 찾는 방법 및 개수 카운터 하는 방법, 리스트를 재배열하거나 정렬하는 방법에 대해서 알아봅시다.

 

추가로 리스트를 간단하고 간결하게 만들 수 있는 컴프리헨션(Comprehesion) 기능에 대해서는 아래 페이지 참조하세요.

https://digital-play.tistory.com/48

 

[파이썬 기초] 리스트 컴프리헨션(list comprehension) 이해하기

리스트 컴프리헨션(List Comprehension) 이해하고 사용하기 파이썬(Python)에서 리스트 컴프리헨션(list comprehension)은 리스트를 간단하고 간결하게 만들 수 있도록 제공하는 방법입니다. 파이썬 유저들 �

digital-play.tistory.com

리스트 연산자: 연결(+), 반복(*), len()

리스트는 문자열과 유사하게 리스트와 리스트를 (+) 연산자를 이용하여 연결, (*) 연산자를 이용하여 리스트 반복이 가능합니다.

len() 함수는 괄호 안에 문자열을 넣으면 문자열의 길이를 세어 주지만, 리스트 변수를 넣으면 요소(element)의 개수를 세어 줍니다.

[ 리스트 연결 ]

list_a = [1, 2, 3]
list_b = [4, 5, 6]

list_a + list_b
[1, 2, 3, 4, 5, 6]

 

[ 리스트 반복 ]

list_a = [1, 2, 3]
list_a * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]

 

[ len() 함수 사용 ]

list_a = [1, 2, 3]
len(list_a)
3

 

리스트에 요소 추가하기: append, insert, extend

append - 리스트의 뒤에 요소 추가하기.

리스트명.append(요소)

[ 리스트 뒤에 요소 추가하기 ]

list_a = [1, 2, 3]

list_a.append(4)
list_a.append(5)

list_a
[1, 2, 3, 4, 5]

 

insert - 리스트 중간에 요소 추가하기.

리스트명.insert(인덱스, 요소)

인덱스는 요소를 삽입할 위치의 인덱스(index)입니다. 따라서 리스트명.insert(0, 요소)는 리스트의 처음에 삽입하고, 리스트명.insert(len(리스트명), 요소)는 리스트명.append(요소)와 동등합니다.

[ 리스트 중간에 요소 추가하기 ]

list_a = [1, 2, 3]

list_a.insert(0, 4)

list_a
[4, 1, 2, 3]

 

entend - 리스트 끝에 이터러블(iterable)의 모든 항목을 추가하기.

리스트명.extend(iterable)

append()와 insert() 함수는 리스트에 하나의 요소를 추가하지만 extend()는 여러 요소를 한 번에 추가할 때 사용할 수 있습니다.

[ 리스트 끝에 여러 요소 추가하기 ]

list_a = [1, 2, 3]

list_a.extend([4, 5, 6])

list_a
[1, 2, 3, 4, 5, 6]

리스트에 요소 제거하기: remove, pop, del, clean

remove - 리스트에서 원하는 요소를 값으로 제거하기.

리스트명.remove(요소)

리스트에서 값이 요소와 같은 첫 번째 요소를 삭제합니다. 만약 값이 일치하는 요소가 없으면 ValueError가 발생합니다.

[ 리스트에서 원하는 요소 제거하기 ]

list_a = [1 ,2 ,3, 1, 2, 3]

list_a.remove(3)
list_a
[1, 2, 1, 2, 3]

 

pop - 리스트에서 원하는 위치의 요소 제거하기

리스트명.pop(인덱스)

리스트에서 인덱스의 위치에 있는 요소를 제거하고 그 요소를 반환합니다. 만약 인덱스를 지정하지 않고 리스트명.pop()라고 사용하면 리스트의 마지막 요소를 제거하고 제거된 마지막 요소를 반환합니다.

[ 리스트 pop() 사용하여 요소 제거 ]

list_a = [1, 2, 3, 4]

list_a.pop(2)
3
list_a
[1, 2, 4]

 

del - 리스트에서 인덱스를 사용하여 요소를 삭제.

del 리스트명[인덱스]

리스트에서 특정 인덱스에 있는 요소 석제 또는 해당 슬라이스를 삭제하거나 전체 리스트를 비울 수 있습니다.

[ 리스트에서 특정 인덱스의 요소 삭제하기 ]

list_a = [1, 2, 3, 4, 5]

del list_a[0]
list_a
[2, 3, 4, 5]

del list_a[1:3]
list_a
[2, 5]

del list_a[ : ]
list_a
[]

 

del은 전체 리스트를 삭제할 경우에 사용할 수 있습니다. 삭제 이후 삭제한 리스트를 참조하게 되면 에러가 발생합니다. 

[ 리스트 전체 삭제하기 ]

del list_a

 

clean - 리스트의 모든 요소를 삭제.

리스트명.clean()

리스트 내의 모든 요소를 삭제할 때 사용하며 del 리스트명[ : ]과 동일한 결과입니다.

[ 리스트의 모든 요소 삭제하기 ]

list_a = [1, 2, 3]

list_a.clean()
list_a
[]

리스트에서 인덱스 찾기: index

index - 특정 요소의 위치 인덱스 찾기.

리스트명.index(요소)

리스트 내에 특정 요소가 몇 번째에 처음으로 위치하는지 해당 인덱스를 반환합니다. 특정 요소가 두 번 이상 중복되어 존재하는 경우에는 처음 위치하는 요소의 인덱스를 돌려줍니다.

만약 요소가 리스트 내에 존재하지 않는다면 ValueError가 발생합니다.

[ 리스트 내에서 특정 요소의 위치 인덱스 찾기 ]

list_a = [1, 2, 3, 4, 5]

list_a.index(4)
3

리스트에서 요소의 등장 횟수 카운터 하기: count

count - 리스트 내에 특정 요소가 몇 개 있는지 확인.

리스트명.count(요소)

리스트에서 요소가 등장하는 횟수를 반환합니다. 만약 특정 요소가 리스트 내에 존재하지 않는다면 0을 반환합니다.

[ 리스트 내 특정 요소의 개수 카운터 하기 ]

list_a = [1, 2, 3, 4, 5, 2, 4]

list_a.count(2)
2

리스트의 재배열 및 정렬하기: reserve, sort

reserve - 리스트의 요소 순서를 거꾸로 뒤집습니다. 

리스트명.reserve()

[ 리스트의 요소 손서 뒤집기 ]

list_a = [1, 2, 3, 4, 5]

list_a.reserve()
list_a
[5, 4, 3, 2, 1]

 

sort - 리스트의 요소를 오름차순 또는 내림차순으로 정렬.

리스트명.sort()

리스트의 요소를 오름차순 또는 내림차순으로 정렬할 수 있습니다. 원본 리스트가 정렬되며 반환 값은 None입니다.

sort() 메서드에서 매개변수로 key와 reverse 가지고 있습니다.

key는 정렬을 위해 비교하기 전에 각 리스트의 요소에 대해 호출할 함수를 지정할 수 있습니다.

예를 들어 문자열의 길이를 기준으로 정렬하기 위해서는 key=len으로, 문자열의 대소문자 구분 없이 정렬하기 위해서는 key=str.low로 입력하면 됩니다. 

reverse는 오름 차순 또는 내림 차순을 결정하는 boolean 변수입니다. 디폴트는 오름차순으로 False이고 생략 가능하며 내림 차순으로 정렬을 위해서는 reverse=True로 입력해야 됩니다. 

[ 리스트 정렬하기 ]

list_a = ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']

list_a.sort()
list_a
['Andrew', 'This', 'a', 'from', 'is', 'string', 'test']


list_a = ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']

list_a.sort(key=str.lower, reverse=True)
list_a
['This', 'test', 'string', 'is', 'from', 'Andrew', 'a']