오도원입니다.

건강과 행복을 위하여

컴퓨터공학/알고리즘

01. List 1 - 2차시

오도원공육사 2020. 2. 13. 21:05
반응형

Python

1. 인터프리터 언어로 독립적인 플랫폼

2. 객체지향

3. IoT분야의 라즈베리파이, 빅데이터 자료분석 등에 쓰인다.

 

프로그램 실행속도 VS 개발속도

 과거에는 실행속도가 느린 파이썬이 주목받지 못하다가 하드웨어의 성능개선과 개발 시간 단축에 관심이 집중되며 파이썬을 많이 사용한다.

 


Yes, Python is Slow, and I Don't Care. A rant on sacrificing performance for productivity.


변수

1. 파이썬에서는 모든 자료가 객체

> Java, C에서 사용되는 기본형 타입 변수도 파이썬에서는 객체

 

2. 변수의 선언은 따로 없다.

> 변수에 값을 초기화 시 변수가 메모리에 생성된다.

> 하나의 변수에 다른 타입의 값을 변수에 저장할 수 있다.

a = 3
a = "hello"

저장된 데이터 타입에 따라 변수형이 달라진다.

 

자료형

타입 type() : 데이터에 저장된 타입을 확인

정수 int : 수 크기의 제한이 없다.

...

 

컨테이너

> 다수의 데이터를 저장할 수 있는 컨테이너

> 순서가 없는 컨테이너는 인덱싱, 슬라이싱이 불가하다.

 

1. List 

배열(List) : 같은 타입의 변수들을 하나의 이름으로 열거하여 사용하는 자료구조

> 파이썬의 리스트는 C, Java의 배열과 비슷하다.

 

리스트를 사용하면 하나의 변수를 통해서 대량의 데이터를 효율적으로 처리할 수 있다.

 

 

2. List 사용법

1. 공백 리스트 생성

파이썬의 변수

 > 별도의 선언 방법이 없으며 변수에 처음 값을 할당할 때 생성

 

값을 초기화하기 전에 변수를 미리 만들어야 하는 경우 => 공백리스트 생성

방법1. num = []

방법2. arr = list()

 

2. 배열과 리스트의 차이점

배열은 같은 타입의 데이터만 저장하고, 크기를 처음 지정 후 변경할 수 없다. 그러나 리스트는 다양한 데이터를 지정할 수 있으며 가변적으로 크기를 변경할 수 있다. 따라서 배열보다 리스트가 사용하기 편하다.

 

3. 2차원 리스트의 개념

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

 

4. 시퀀스(Sequence) 자료형

순서가 존재함으로, 인덱싱과 슬라이싱의 연산 모두 적용가능

 

1. 인덱싱(Indexing) : 시퀀스 자료형에서 하나의 요소를 인덱스 연산자를 통하여 참조하는 것

arr = [4, 5, 6, 7, 8, 9]
arr[0] # 4
arr[-1] # 9

 

2. 슬라이싱(Slicing) : 시퀀스 자료형의 원하는 범위를 선택하는 연산

arr = [4, 5, 6, 7, 8, 9]

arr[1:3] # [5, 6]
arr[:3] # [4, 5, 6]
arr[1:] # [5, 6, 7, 8, 9]
arr[:] # [4, 5, 6, 7, 8, 9]

[시작인데스 : 끝인덱스-1]

 

5. 함수와 연산

sort()를 사용하면 원본 데이터가 변경되어 적용된다.

 

이것 말고도 다양하다.

 

6. 리스트 함축(List Comprehension)

수학에서 집합을 정의하는 표현식과 유사하다.

 

10보다 작은 짝수들의 집합을 원소로 하는 리스트

<C/C++>

int myList[5] = {2, 3, 4, 5, 6};
int newList[5];
for(int cnt = 0, i = 0; i < 5; i++) {
	if(myList[i] % 2 == 0) {
    	newList[cnt++] = myList[i];
    }
}

 

<Python>

myList = [2, 3, 4, 5, 6]
newList = [i for i in myList if i%2 == 0]

리스트 함축에서 if문을 생략할 수 있고, for문과 if문은 추가적으로 더 작성할 수도 있다.

반응형