관리 메뉴

공부 기록장 💻

[Python] 자료형 (수 자료형, 리스트 자료형) + 수행 시간 측정 본문

# Language & Tools/Python

[Python] 자료형 (수 자료형, 리스트 자료형) + 수행 시간 측정

dream_for 2022. 3. 3. 20:05

수행 시간 측정

import time  
start\_time = time.time() # 측정 시작  

# 프로그램   
end\_time = time.time()  
print('time: ', end\_time-start\_time) # 수행 시간 출력  

파이썬 자료형

- 리스트: C++의 벡터, Java의 ArrayList
- 정수형, 실수형
- 문자열
- 튜플
- 사전


수 자료형

지수 표현 방식

  • 1e9의 경우 10의 9제곱(1,000,000,000)
  • 지수 표현 방식은 임의의 큰 수를 표현하기 위해 자주 사용됨
  • 최단 경로 알고리즘에선 도달할 수 없는 노드에 대하여 최단 거리를 무한(INF)로 설정
    • 이 때 가능한 최댓값이 10억 미만인 경우 무한(INF)의 값으로 1e9 이용 가능
# 1,000,000,000의 지수 표현 방식
a = 1e9
print(a) # 1000000000.0 출력

# 752.75
a  = 75.275e1
print(a)

# 3.954
a = 3954e-3
print(a)

실수형

  • 컴퓨터 시스템이 정확한 결과값으로 도출하기 어려움
  • round(숫자, 반올림 자릿수) 함수 사용
round(123.456, 2) # 123.46 츨략
# 소수부가 0일 때 0을 생략
a = 5.
print(a) # 5.0 출력
print(int(1e9))

# 정수부가 0일 때 0을 생략
a = -.7
print(a) # -0.7 출력

리스트 자료형

  • 리스트 : 여러 유사한 성질의 데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형
  • C나 자바에서의 배열의 기능 및 연결 리스트와 유사한 기능
  • C++ STL의 vector와 기능적으로 유사
  • 리스트 대신 배열, 테이블이라고도 부름

리스트 초기화

  • [1,2,3]
  • 빈 리스트 선언 : a = list(), a = []
  • 원소 접근: 인덱스 값 [0], [1] 사용
# 크기가 N이고 모든 값이 0인 1차원 리스트 초기화

n = 10
a = [0] * n
print(a)

리스트 인덱싱

  • 인덱싱(indexing) : 인덱스 값을 입력하여 리스트의 특정한 원소에 접근하는 것
    • 음의 정수: 거꾸로 탐색
a = [1,2,3,4,5,6,7,8,9]

# 뒤에서 첫번째 원소 출력
print(a[-1]) # 9 출력

# 뒤에서 세번쨰 원소 출력
print(a[-3]) # 7 출력

리스트 슬라이싱

  • 슬라이싱(slicing) : 리스트에서 연속적인 위치를 갖는 원소들을 가져올 때 이용
  • 리스트의 일부분만 추출
    • 대괄호 안에 콜론(:) 넣어 시작, 끝 인덱스 설정
    • 끝 인덱스는 실제 인덱스보다 1 크게 설정
a = [1,2,3,4,5,6,7,8,9]

# 두번째부터 네번째 원소까지 출력
print(a[1:4]) # [2,3,4] 출력

리스트 컴프리헨션

  • 리스트를 초기화하는 방법 중 하나
    • 대괄호 안에 조건문, 반복문을 적용하여 리스트 초기화
  • 0부터 9까지의 수를 포함하는 리스트
array = [i for i in range(10)]
print(array) # [0,1,2, ... ,9] 출력
  • 0부터 19까지의 수 중 홀수만 포함하는 리스트

    a = [i for i in range(20) if i%2 == 1]
    
    print(a) # \[1,3,5, ... , 19\] 출력
    

1부터 9까지의 수들의 제곱 값을 포함하는 리스트

array = \[i\*i for i in range(1, 10)\]

print(array) # \[1, 4, 9, ... , 81\] 출력

2차원 리스트 - 리스트 컴프리헨션

  • N X M 크기의 2차원 리스트를 한번에 초기화하는 경우에 유용
    • array = [[0] * M for _ in range(N)]
  • 잘못된 예시 : array = [[0]*m] *n]
    • 전체 리스트 안에 포함된 각 리스트가 모두 같은 객체로 인식됨 (참조값을 복사하게 됨)

리스트 관련 메서드

함수명 사용법 설명 시간복잡도
append() 리스트.append(원소) 리스트에 원소 삽입 O(1)
sort() 리스트.sort(), 리스트.sort(reverse=True) 오름차순(기본), 내림차순 정렬 O(NlogN)
reverse() 리스트.reverse() 리스트의 원소 순서를 뒤바꿈 O(N)
insert() 리스트.insert(삽입할 위치 인덱스, 삽입할 값) 특정 인덱스에 원소 삽입 O(N)
count() 리스트.count(특정 값) 리스트에서 특정 값을 가지는 데이터의 개수 셀 때 O(N)
remove() 리스트.remove(특정값) 특정 값을 갖는 원소를 제거하는데, 여러개면 하나만 제거 O(N)

리스트에서 특정 값을 가지는 원소 모두 제거하기

a = [1,2,3,4,5,5,5]
remove_set = {3,5} # 집합 자료형

# remove_list에 포함되지 않은 값만을 저장
result = [i for i in a if i not in remove_set]
print(result)

728x90
반응형
Comments