본문 바로가기

Python

주식 알고리즘 만들기 - 2. 자료구조 (리스트)

반응형

 

1) 리스트 생성

리스트는 여러 개의 데이터를 '순서대로' 저장하고 이를 관리할 때 사용합니다.

 

# 관심종목

리스트로 관심종목을 만들어 봅시다.

관심종목 = ["네이버", "LG전자", "삼성전자", "SK하이닉스"]
관심종목[0]       # '네이버'
관심종목[1]       # ' LG전자'

 

# 종가

종가를 저장해봅시다. 즉, 네이버 9월 30일부터 10월 7일까지 종가를 넣어 봅시다.

네이버종가 = [193500, 176500, 164000, 167000, 160000]
# 실수형 데이터도 가능하다

#내 보유 주식 50 주를 들고 있다고 가정하면, 다음 리스트 작성이 가능하다.
내 주식 = ['네이버', 50]

 

2) 리스트 인덱싱 []
네이버종가[0]
>> 193500
네이버종가[1]
>> 176500
네이버종가[2]
>> 164000


# 음수로 해봅시다.

네이버종가[-1]
>> 160000                   #  = 네이버종가[4]
네이버종가[-2]
>> 167000                   #  = 네이버종가[3]

3) 리스트 슬라이싱 [ : ]

여러개의 데이터를 동시에 접근하려면 어떻게 해야할까요?

이때 바로 리스트 슬라이싱을 사용합니다.

2022년 10월 08일 기준 시가총액 top10 알아봅시다.

순위 종목명
1 삼성전자
2 LG에너지솔루션
3 SK하이닉스
4 삼성바이오로직스
5 삼성전자우
6 LG화학
7 삼성SDI
8 현대차
9 기아
10 NAVER

표 3.1 2022년 10월 08일 기준 시가총액 TOP10

 

다음을 리스트로 표현하면 다음과 같습니다.

kospiTop10 = ['삼성전자' , 'LG에너지솔루션', 'SK하이닉스', '삼성바이오로직스', '삼성전자우', 'LG화학', '삼성SDI', '현대차', '기아', 'NAVER']

여기서 시가총액 Top순위를 출력하는 프로그램을 만드는게 가능해진다.

kospiTop10[4]          #TOP5
>>'삼성전자우'
kospiTop10[2]          #TOP3
>>'SK하이닉스'

또 여기서 우리는 새로운 TOP5 순위리스트로 출력하고 싶어지는 욕구가 생긴다. 한번 해봅시다.

kospiTop5 = kospiTop10[0:5]
kospiTop5
>>['삼성전자' , 'LG에너지솔루션', 'SK하이닉스', '삼성바이오로직스', '삼성전자우']

 

즉, 우리는 리스트[0] 낱개로 하나씩 출력하는 것과 리스트 [ : ] 슬라이싱으로 여러개를 출력할 수 있는 방법을 알게 된 겁니다.

 

4)리스트 데이터 삽입 append(), insert()

그러면 10위 시총에서 11위 ~20위 까지 추가하고 싶어지는 욕구가 생길 것이다. 그럼 그 욕구를 충족시켜보자

kospiTop10 = ['삼성전자' , 'LG에너지솔루션', 'SK하이닉스', '삼성바이오로직스', '삼성전자우', 'LG화학', '삼성SDI', '현대차', '기아', 'NAVER']

바로 append 메서드를 사용하면 되는데 직접해보자.

kospiTop10.append('셀트리온')
kospiTop10
>> ['삼성전자' , 'LG에너지솔루션', 'SK하이닉스', '삼성바이오로직스', '삼성전자우', 'LG화학', '삼성SDI', '현대차', '기아', 'NAVER', '셀트리온']

append('추가할 내용') 을 입력하면 위와 같이 리스트가 추가 된걸 확인 할 수 있다.

다른 방법은 insert() 가 있는데 append()는 위와 같이 끝에 추가되는 반면, insert 메서드는 원하는 위치에 추가 시킬수 있다. 예를 들어 NAVER가 셀트리온에 시총이 밀렸다 생각해보자

kospiTop10.insert(9, '셀트리온')
kospiTop10
>>['삼성전자' , 'LG에너지솔루션', 'SK하이닉스', '삼성바이오로직스', '삼성전자우', 'LG화학', '삼성SDI', '현대차', '기아', ,'셀트리온', 'NAVER']

 

5) 리스트 데이터 삭제 len()

방금 셀트리온이 NAVER 자리를 차지했으니 TOP11인 NAVER를 지우고 싶어지는 욕구가 생기기 시작한다.

len()이라는 함수를 통해서 리스트의 길이를 알수 있다. 총 몇개의 데이터가 있는 파악한 후에 한 번 삭제해보자.

len(kospiTop10)
>>11

즉, 마지막에 있는걸 지우면 된다. 우리는 이제 마지막 리스트를 불러 올 수 있는 실력을 갖추고 있다. 

그걸 del 로 지워보자.

 

kospiTop10[-1]
>>'NAVER'
del kospiTop10[-1]
kospiTop10
>> ['삼성전자' , 'LG에너지솔루션', 'SK하이닉스', '삼성바이오로직스', '삼성전자우', 'LG화학', '삼성SDI', '현대차', '기아', ,'셀트리온']
len(kospiTop10)
>>10

깔끔하게 NAVER가 지워지고 없어진 것을 볼 수 있다.

728x90