파이썬 리스트(list) 사용법 두번째! 값검사, 길이별 정렬, 음수 인덱싱 등

2021. 7. 7. 06:27

파이썬의 기본 자료형에는 튜플, 딕셔너리, 리스트, 셋트가 있다. 그 중에서 가장 많이 사용되는 자료형은 리스트가 아닌가 싶다. 리스트를 사용하다보면 어느 순간 작성해 본 구문으로 계속 사용하게 된다. 그래서 쉽게 한두줄로 할 수 있는 것도 몰라서 복잡하게 작성하게 된다.

오늘은 파이썬 리스트(list) 사용법 두번째로 값검사, 길이별 정렬, 음수 인덱싱 등에 대해서 알아보도록 하겠다.

 

 

파이썬 리스트

 

 

1. 값검사

리스트에 어떤 값이 들어있는지 궁금할 때가 있다. 이전 포스팅에서 다룬 index를 사용하면 처음 찾은 값의 위치를 반환해준다. 혹은 아래와 같이 in을 사용하면 코드를 직관적으로 이해하기 더 좋을 듯 하다.

temp = [ 1,2, 3, 3, 4]

print(temp.index(3))
print(3 in temp)


Out [1]: 2
Out [1]: True

 

 

2. 요소의 길이나 특정 조건으로 정렬하기

리스트를 정리하기 위해서는 sort함수를 이용하면 된다. reverse함수를 이용하면 거꾸로 정렬도 가능하다. 각 요소별 길이에 따라 정렬하려면 어떻게 해야 할까. len함수와 for문을 이용해서도 가능하겠지만 아래와 같이 함수 하나로도 가능하다.

temp = ["seoul", 'busan', "incheon", "jeju"]
temp.sort(key=len)
print(temp)

Out [1]: ['jeju', 'seoul', 'busan', 'incheon']

 

 

정렬 기준으로 사용할 값을 반환할 함수를 넣는 것인데, pandas 데이터프레임에 apply함수를 이용하는 것처럼 사용자 정의함수도 적용할 수 있다. 참고로 문자열 뒤에 count함수를 넣으면 해당 문자열의 갯수를 반환해준다.

def is_e(x):
    return -x.count("n")
 
temp.sort(key=is_e)


Out [1]: ['incheon', 'busan', 'jeju', 'seoul']

 

 

reverse함수도 입력인자에 key가 있을 것 같지만, reverse함수에는 입력인자가 하나도 없다.

 

 

3. 음수 인덱싱

리스트를 뒤에서부터 탐색할 때는 -기호를 이용하면 된다. -기호를 붙이면 뒤에서부터 세면 된다. 예를 들면 아래와 같다.

 

음수 인덱싱

 

양수로 인덱싱을 할 때는 시작값은 포함되고 끝값은 제외됐다. (이상) ~ (미만)이라고 이해하면, 기억하기 좋을 듯 하다. 하지만, 음수로 인덱싱을 할 때는 시작값은 제외되고 끝값이 포함된다. (초과) ~ (이하)로 음수라서 거꾸로 한다고 생각하면 기억하기는 좋을 듯 하다.

temp = ["a", "b", "c", "d", "e"]
temp[-4:-2]


Out [1]: ['b', 'c']

 

 

4. 인덱싱 간격 지정

두 번째 값만 가져오고 싶다면 아래와 같이 하면 된다. 보통 1:10만 알고 있는데, 마지막에 간격을 지정할 수 있다. 1:10:2라고 입력하면, 1부터 10미만까지 2의 간격으로 증가한다.

temp = ["a", "b", "c", "d", "e", "f"]
temp[::2]

Out [1]: ['a', 'c', 'e']

 

 

print함수를 이용하면 리스트를 조회할 수 있지만, 뭔가 아쉽다. 리스트를 이쁘게 조회하는 방법이 궁금하다면, 아래 포스팅을 참조해보자.
( 참조: 파이썬 리스트와 딕셔너리를 이쁘게 시각화 조회하는 방법! )

 

 

오늘은 이렇게 파이썬 리스트(list) 사용법 두번째로 값검사, 길이별 정렬, 음수 인덱싱 등에 대해서 알아보았다. 자주 쓰지는 않다보니 막상 필요할 때 잘 기억이 나지 않는다. 이런게 있다는 것을 알아두고 사용해야 할 때 찾아보는 것이 좋을 듯 하다. 리스트의 조회, 추가, 삽입, 삭제 등 기본적인 내용은 이전 포스팅에서 다루었으니 참고바란다.

댓글()