리스트 함수,
문자열 함수처럼 리스트에서도 리스트만 쓸수있는 자체 함수가 있습니다.
2020/03/06 - [파이썬/문법] - 자료형 - 3-3. 문자열 함수 (이전글보고 오려면 클릭)
리스트 함수도 마찬가지로, 내장함수와 메쏘드로 구분할 수 있습니다.
솔직히 리스트 내장함수는 문자열 내장함수와 동일하게, len(), max(), min()가 있습니다.
역할또한 똑같으니, 내장함수는 생략하고,(이전글 링크 참고) 리스트만의 메쏘드를 자세히 알아보도록 하겠습니다.
리스트 메쏘드(methods) :
.append() 함수 : 리스트 요소 추가
a = [1, 2, 3]
print(a) # [1, 2, 3]
a.append(4) # [1, 2, 3, 4]
a.append([1, 2]) # [1, 2, 3, 4, 1, 2]가 아닌, [1, 2, 3, 4, [1, 2]]
print(a)
리스트의 끝부분(맨오른쪽, 마지막인덱스다음)에 인자값(함수 괄호안의 값)을 요소로 추가하는 함수입니다.
그때의 인자값이 무엇이든, 심지어 리스트든 가능합니다. (리스트상태가 하나의 요소로 추가됩니다.)
그리고 호기심에 발견했는데, 자기(리스트)자신을 요소로 추가할 수 있습니다.
roop = ['무한으로즐겨요']
roop.append(roop)
print(roop, roop[1], roop[1][1][1][1])
# 출력결과 : 셋다 ['무한으로즐겨요', [...]]
그러면 이렇게 무한리스트?를 만들수 있습니다. 참조한 리스트자신은 [...]으로 생략해서 보여지며,
[...]부분을 여러번 인덱싱으로 참조해도 참조하는 값이 자기자신이기 때문에 출력되는 값은 같습니다.
.insert() 함수 : 리스트 원하는 인덱스에 요소 추가
d = [1, 2, 3]
d.insert(0, 4)
print(d) # 출력결과 : [4, 1, 2, 3]
append()함수와 리스트 요소를 추가하는 역할은 같지만, insert()의 다른점은 인자값(매개변수)이 2개며,
원하는인덱스(첫번째인자값)에 요소(두번째인자값)을 추가하는 함수입니다.
기존에 있던 요소는 인덱스 한칸 뒤로 밀리며, 경우에 따라서 삽입하려는 인덱스의 기존 요소부터 리스트의 맨끝요소까지 모두 한칸씩 뒤로 밀리게 됩니다.
.extend() 함수 : 리스트에 다른 리스트로 확장
d = [1, 2, 3]
d.extend([3, 4])
print(d) # 출력결과 : [1, 2, 3, 3, 4]
그런가하면, 리스트를 확장할 수도 있습니다. extend()함수는 기존리스트끝에 인자값으로 받은 리스트를 이어서 연장, 확장할 수 있습니다.
당연히 인자값으로는 리스트만 올 수 있는것이 특징인데, append()함수도 인자값으로 리스트가 올 수 있지만, 두 함수가 다른 역할을 수행한다는 차이점을 이해하면 좋을 것 같습니다. (append()함수는 인자값의 리스트를 기존리스트의 한 요소로 추가하지만, extend()함수는 인자값의 리스트 요소들을 기존리스트의 요소들로 추가합니다.)
.pop() 함수 : 리스트 요소 삭제후 반환
d = [1, 2, 3]
print("pop된 값: ", d.pop()) # 출력결과 : pop된 값: 3
print(d) # 출력결과 : [1, 2]
print("pop된 값: ", d.pop(0)) # 출력결과 : pop된 값: 1
print(d) # 출력결과 : [2]
반대로 리스트의 요소를 삭제하려면, pop()함수를 사용하면 됩니다.
인자값이 없다면 맨 마지막 요소를 삭제하고, 그 삭제된 요소를 반환합니다.
만약 인자값이 주어진다면, 인자값과 동일한 인덱스의 요소를 삭제하고 반환합니다.
del 리스트[인덱스] 와 같이 인덱스로 요소를 삭제하는 방식은 동일하지만, 삭제된 요소를 반환한다는 것이 pop()함수만의 차별점인것 같습니다.
.remove() 함수 : 리스트 요소 삭제
d = [1, 2, 3, 4]
d.remove(4)
print(d) # 출력결과 : [1, 2, 3]
remove() 함수는 del, pop()함수와 다른 방식으로 요소를 삭제합니다.
바로 인덱스 값이 아니라 인자값과 일치하는 요소를 삭제하는 것인데요.
더군다나 pop()함수처럼 삭제한 요소를 반환하지도 않습니다. 만약 인자값과 일치하는 요소가 여러개일 경우라면 모두 삭제하지 않고, 인덱스 번호를 기준으로 가장 왼쪽의 요소 하나만 삭제합니다.
.sort() 함수 : 리스트 정렬
b = [2, 3, 1]
b2 = ['d', 'c']
b3 = ['낟', '난', '각']
b4 = [1, 2, 3]
b.sort()
b2.sort()
b3.sort()
b4.sort(reverse=True)
print(b, b2, b3, b4)
# 출력결과 : [1, 2, 3] ['c', 'd'] ['각', '난', '낟'] [3, 2, 1]
sort()함수는 리스트의 요소를 정렬시키는 함수로,
숫자든, 문자든 123, abc (오름차)순으로 정렬시킵니다.
(심지어 한글도 정렬시키는걸 볼수 있습니다 크~! 그러나 여러 자료형이 혼합된 리스트는 정렬하지 못하는 것 같습니다.)
sort()함수의 괄호에 reverse=True 속성을 추가하면, 리스트를 역순으로 (내림차순)정렬할 수 있습니다.
참고로 sorted()라는 파이썬의 내장함수로도 정렬할 수 있습니다. 이때는 리스트를 정렬시키는 것이 아니라 리스트가 정렬된 값을 반환합니다.
.reverse() 함수 : 리스트 요소의 순서 반전
c = ['가자!', '때가 왔다!', '포기 할', '생각마라!', '승리할', '우리다!', '하찮은', '적들을 봐라!']
for ch in c:
print(ch, end=' ')
print()
# 출력결과 : 가자! 때가 왔다! 포기 할 생각마라! 승리할 우리다! 하찮은 적들을 봐라!
c.reverse()
for ch in c:
print(ch, end=' ')
# 출력결과 : 적들을 봐라! 하찮은 우리다! 승리할 생각마라! 포기 할 때가 왔다! 가자!
reverse()함수는 리스트의 요소를 역순으로 뒤집는 함수입니다. 말그대로 리스트의 요소들의 순서를 반전시키며, 이때 정렬하는 것은 아닙니다.
(역순 정렬과 헷갈리기 쉬운데 다릅니다.)
참고로 reversed()라는 파이썬의 내장함수로도 순서를 반전할 수 있습니다. 이때는 리스트를 정렬시키는 것이 아니라 리스트가 순서 반전된 상태로 reversed 객체상태로 반환됩니다. (list()함수를 반환된 결과에 씌우면 리스트로 변환할 수 있습니다.)
// 내장함수에 대해선 다음에 다른것들과 정리해서 다시 만나볼 수 있습니다.
.index() 함수 : 리스트의 요소 인덱스 반환
d = [1, 2, 3]
print(d.index(2)) # 출력결과 : 1
index()함수는 리스트의 요소값을 전달받아서 그값과 일치하는 요소의 인덱스를 반환하는 함수입니다.
요소의 값을 이용하는 것을 보면 remove()함수와 비슷하며, d[n] 같이 인덱싱으로 요소 값을 반환하는 방식과 반대입니다. (인자값과 일치하는 요소가 여러개일 경우, remove()함수와 마찬가지로 가장 왼쪽 요소의 인덱스를 반환합니다.)
.count() 함수 : 리스트 요소 사용횟수 반환
d = [1, 2, 1]
print(d.count(1)) # 출력결과 : 2
count()함수는 문자열메쏘드에서 봤었는데, 수행하는 역할도 문자열메쏘드에서와 동일합니다.
리스트에서 인자값과 일치하는 요소가 몇개 있는지 그 횟수를 반환합니다.
.clear() 함수 : 리스트 초기화(빈리스트로)
d = [1, 2, 1]
print(d.count(1)) # 출력결과 : 2
그외에도 clear()라는 함수로 리스트를 비울 수도 있습니다.
(물론 빈리스트([], list())로 새로 정의해도 되겠지만 (ex> d = [] ), 이럴경우 원래 있던 리스트를 수정하는 것이 아니라, 새로운 리스트인 빈리스트를 할당하게 됩니다. 기존의 리스트의 주소를 유지하면서 수정하고 싶다면 clear()함수를 이용하거나 del을 이용해서 전부를 지워주면 됩니다.)
리스트도 문자열 만한 메쏘드를 가진것 같습니다;; (그래도 문자열 메쏘드가 특출나게 많긴 하지만요..)
이렇게 리스트 자료형에 대해서 정리를 마치고, (그렇다고 리스트의 문법이 끝이 아니라, 리스트 내포같은 중요한 문법이 남아있습니다, 나중에 정리하겠습니다;;)
다음번엔 새로운 자료형에 대해서 알아보도록 하겠습니다!
'파이썬(Python) > 문법' 카테고리의 다른 글
자료형 - 5. 집합 자료형 (0) | 2020.03.27 |
---|---|
자료형 - 4-1. 리스트자료형 (0) | 2020.03.25 |
자료형 - 3-5. 문자열 포맷팅 심화, 형식 지정자 (1) | 2020.03.11 |
자료형 - 3-4. 문자열 포맷팅 (0) | 2020.03.10 |
자료형 - 3-3. 문자열 함수 (0) | 2020.03.06 |