파이썬 리스트(list) 기초 이해하기
리스트를 연결하고 반복할 수 있는 연산자, 리스트에서 요소를 추가하고 제거하는 방법, 그리고 리스트에서 특정 요소의 인덱스 찾는 방법 및 개수 카운터 하는 방법, 리스트를 재배열하거나 정렬하는 방법에 대해서 알아봅시다.
추가로 리스트를 간단하고 간결하게 만들 수 있는 컴프리헨션(Comprehesion) 기능에 대해서는 아래 페이지 참조하세요.
https://digital-play.tistory.com/48
리스트 연산자: 연결(+), 반복(*), 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']
'파이썬 기초' 카테고리의 다른 글
if __name__ == "__main__" 제대로 이해하기 (0) | 2020.08.22 |
---|---|
[파이썬 기초] 리스트 컴프리헨션(list comprehension) 이해하기 (0) | 2020.08.20 |
파이썬 코딩 규칙 (0) | 2020.08.18 |
[파이썬 코딩] 컴파일러와 인터프리터의 차이점 (0) | 2020.08.14 |
파이썬 언어의 특징 (0) | 2020.08.13 |