2020. 6. 9. 01:43ㆍInvestment Story/금융공학 - 파이썬
안녕하세요 자꿈두입니다.
지난번엔 문자열 자료형에 대해 알아보았었는데요
이번에 새로 공부할 자료형은 리스트(list)입니다.
리스트는 다양한 데이터를 보관할 수 있는 자료형입니다.
심지어 리스트가 리스트를 보관할 수도 있습니다.
또한 리스트는 문자열과 같이 시퀀스형 자료형인데요,
순서가 존재합니다.
리스트 생성하기
리스트는 대괄호 [ ] 를 이용해 생성할 수 있습니다.
a = ['철수', '영희', '영구']
위처럼 만들 수 있는데요
대괄호 안에 넣고 싶은 데이터를 넣으면 됩니다.
아무것도 안넣어도 리스트는 생성됩니다.
a = [ ]
위처럼요.
비어있는 리스트는 함수를 이용해서 만들 수 있습니다.
a = list()
위와 같이 만들 수 있습니다.
리스트 안에 서로 다른 데이터를 넣을 수 있다고 이야기 했죠.
a = [ 1, 'abc' , '가나다', ['철수', '영희'] ]
위와 같이 리스트 안에 숫자, 문자열, 리스트 등 다양한 데이터를 넣을 수 있습니다.
리스트 인덱싱 및 슬라이싱
리스트도 문자열과 같이 시퀀스형 자료형이라고 이야기 했죠.
문자열과 같이 인덱싱과 슬라이싱이 가능합니다.
2020/05/11 - [경제 및 투자이야기/금융공학] - 8. 문자열 알아보기
위 예시를 보면서 이야기 해볼까요.
우리가 문자열 때 배운 인덱싱과
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 = [['철수', '영희'] ]
위와 같이 되겠죠.
그럼 만약 '가나다'라는 데이터가 여러개 있으면 어떨까요?
그러면 가장 첫 번째의 '가나다'만을 지워줍니다.
다 지우고 싶으면 반복문을 이용하면 되겠죠.
데이터 삽입
데이터 삽입은 append와 insert를 이용할 수 있습니다.
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 |