11. 리스트 알아보기

2020. 6. 9. 01:43Investment Story/금융공학 - 파이썬

반응형

안녕하세요 자꿈두입니다. 

지난번엔 문자열 자료형에 대해 알아보았었는데요

이번에 새로 공부할 자료형은 리스트(list)입니다. 

 

리스트는 다양한 데이터를 보관할 수 있는 자료형입니다.

심지어 리스트가 리스트를 보관할 수도 있습니다.

또한 리스트는 문자열과 같이 시퀀스형 자료형인데요, 

순서가 존재합니다.


리스트 생성하기

리스트는 대괄호 [ ] 를 이용해 생성할 수 있습니다. 

 

a = ['철수', '영희', '영구']

 

위처럼 만들 수 있는데요

대괄호 안에 넣고 싶은 데이터를 넣으면 됩니다. 

아무것도 안넣어도 리스트는 생성됩니다.

 

a = [ ]

 

위처럼요.

비어있는 리스트는 함수를 이용해서 만들 수 있습니다.

 

a = list()

 

위와 같이 만들 수 있습니다.

리스트 안에 서로 다른 데이터를 넣을 수 있다고 이야기 했죠.

 

a = [ 1, 'abc' , '가나다', ['철수', '영희'] ] 

 

위와 같이 리스트 안에 숫자, 문자열, 리스트 등 다양한 데이터를 넣을 수 있습니다.


리스트 인덱싱 및 슬라이싱

리스트도 문자열과 같이 시퀀스형 자료형이라고 이야기 했죠.

문자열과 같이 인덱싱과 슬라이싱이 가능합니다.

2020/05/11 - [경제 및 투자이야기/금융공학] - 8. 문자열 알아보기

 

8. 문자열 알아보기

안녕하세요 자꿈두입니다. 오늘 포스팅은 문자열이라는 자료형에 대해서 알아볼텐데요. 문자열이란 말 그대로 데이터가 문자들의 집합으로 이루어진 것입니다. 예를 들어 "반갑습니다, 자꿈두�

tobefreein2040.tistory.com

위 예시를 보면서 이야기 해볼까요. 

우리가 문자열 때 배운 인덱싱과 

for문을 이용해 배운 걸 검증하는 예시입니다. 

지금까지 제 파이썬 공부 글을 보신 분들이라면 충분히 이해할 수 있겠죠?

 

리스트도 문자열과 마찬가지로 첫 순서는 0부터 시작됩니다. 

즉 a[0] = 1, a[1] = abc, a[2] =가나다, a[3] = ['철수', '영희]]

가 되는 것이죠.

 

그러면 리스트 안에 리스트의 인덱싱은 어떻게 될까요?

리스트가 있는 위치를 먼저 앞에 쓰고 그 리스트 안에 인덱싱을 새로하는 것입니다.

즉 철수의 위치는

a[3][0]이 되는 것이고,

영희의 위치는

a[3][1] 가 되겠죠.

 

슬라이싱과 음의 인덱싱도 문자열과 같으니 넘어가겠습니다.

궁금하신 분은 문자열 알아보기 글을 참고해주시기 바랍니다.


리스트 수정 


리스트 수정

리스트를 수정하는 것은 매우 쉽습니다.

해당하는 인덱스에 다른 값을 그냥 넣어주면 됩니다.

 

a = [ 1, 'abc' , '가나다', ['철수', '영희'] ] 

 

위의 예시에서

'abc'를 'aaa'로 바꾸고 싶다고 하면

 

a[1] = 'aaa'

라고 그냥 해주면

 

a = [ 1, 'aaa' , '가나다', ['철수', '영희'] ]

 

a 리스트는 위와 같이 됩니다.


데이터 삭제

리스트 내에 데이터를 지우는 방법은 

del을 이용하면 됩니다.

del a[인덱스]

또는 슬라이싱을 이용하셔도 되고요

 

다시 예시를 가져와

 

a = [ 1, 'aaa' , '가나다', ['철수', '영희'] ]

에서 1과, 'aaa' 데이터를 지우고 싶다면

 

del a[:2]

 

위와 같이 슬라이싱을 이용할 수 있겠죠.

그럼 결과는

 

a = ['가나다', ['철수', '영희'] ]

 

위와 같이 될 것입니다.

 

remove 함수를 이용하셔도 되는데

remove 함수는 특정 데이터를 찾아 지우는 함수입니다.

'가나다'를 지우고 싶으면

 

a.remove('가나다')

 

를 치시면 '가나다'를 찾아서 삭제해줍니다.

그러면

 

a = [['철수', '영희'] ]

 

위와 같이 되겠죠.

그럼 만약 '가나다'라는 데이터가 여러개 있으면 어떨까요?

그러면 가장 첫 번째의 '가나다'만을 지워줍니다.

다 지우고 싶으면 반복문을 이용하면 되겠죠.


 

 

데이터 삽입

데이터 삽입은 appendinsert를 이용할 수 있습니다.

append는 리스트 맨 마지막에 데이터를 추가하는 함수입니다.

 

a = [['철수', '영희'] ]

라는 리스트가 있을 때 '가나다'라는 데이터를 뒤에 추가하려면

 

a.append('가나다')

를 이용하면 되겠죠.

 

a = [['철수', '영희'], '가나다' ]

결과는 위처럼 나옵니다. 

 

insert는 원하는 위치에 데이터를 삽입할 수 있습니다. 

a.insert(원하는 위치, 데이터)

를 이용하면 됩니다. 

 

a.insert(0, 1)

을 하면 어떻게 될까요

 

a = [1, ['철수', '영희'], '가나다' ]

위처럼 되겠죠

 

중간에도 한번 넣어볼까요?

a.insert(1, [123,'abc'])

를 해봅시다.

 

a = [1, [123, 'abc'], ['철수', '영희'], '가나다' ]

이처럼 리스트 타입도 안에 삽입할 수 있습니다.


리스트 연장

리스트 두개를 연장할 수 있는데요

이 때는 그냥 덧셈 연산자를 사용해도 되고, extend 함수를 이용해도 됩니다.

a = [1, 2, 3]

이라는 리스트가 있을 때

b = a + [4, 5, 6]

하면

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

이렇게 연장이 됩니다. 

 

다만 extend함수를 사용하면 본인의 값이 계산되서 반환됩니다.

extend 함수는 extend(리스트)를 사용하면 되는데요.

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

를 진행하면

 

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

의 결과가 나오는 것이죠.


리스트 정렬

리스트를 정렬하는데는

sort 함수를 이용하면 됩니다. 

 

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

이면 a.sort()를 사용한다면

 

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

결과가 나올 것이고요

 

알파벳도 알파벳 순서로 정렬해줍니다. 

 

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

에서 a.sort()를 사용하면

 

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

결과가 나옵니다.

 

만약에

a = ['1441', '24', '5', '90'] 

이라면 a.sort()를 이용하면 어떻게 될까요?

 

결과는

a = ['1441', '24', '5', '90']

그대로 출력이 됩니다. 

 

약간 tricky했는데요. 

자세히 보시면 저 숫자들은 문자열입니다. 

그래서 문자열의 시작만을 보고 정렬을 해서 1, 2, 5, 9 형태로 정렬을 한 것이죠.

문자열 형태의 숫자를 숫자순서로 정렬하려면

 

key를 이용해주어야 합니다.

a.sort(key=int)

를 한다면 데이터가 정수형으로 바뀌어 숫자로 인식해 정렬을 하기 때문이죠.

 

a = ['5', '24', '90', '1441'] 

로 원하는 결과를 얻을 수 있습니다. 

 

그러면 역순서로 정리하고 싶다면?

reverse 함수를 이용하면 됩니다.

단 reverse 함수는 현재 리스트 순서를 그냥 거꾸로 바꿔주는 함수입니다.

 

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

에서

 

a.reverse()

를 실행한다면

 

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

거꾸로 됩니다. 

 

그럼 거꾸로 순서대로 정리하고 싶다면 어떻게 할까요?

a.sort(reverse=True)를 이용하면 됩니다.

 

결과는

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

 

아까처럼 숫자가 문자열 형태로 존재하고, 이를 역순서로 정렬하고 싶다면?

 

a = ['1441', '24', '5', '90']

 

a.sort(reverse=True, key=int)

두 가지 다 이용하면 되겠죠.

 

a = ['1441', '90', '24', '5']

의 결과를 얻을 수 있습니다.


오늘은 리스트 자료형에 대해 알아보았습니다. 

감사합니다.

반응형

'Investment Story > 금융공학 - 파이썬' 카테고리의 다른 글

13. 딕셔너리 알아보기  (0) 2020.06.13
12. 튜플 알아보기  (1) 2020.06.10
10. 반복문 알아보기  (0) 2020.06.07
9. 조건문 알아보기  (4) 2020.05.13
8. 문자열 알아보기  (0) 2020.05.11