반응형

* 이 포스트는 "파이썬 프로그래밍으로 지루한 작업 자동화하기" 의 내용을 참조해서 작성하였습니다.

* 파이썬 3.3을 기준으로 작성하였습니다.




사전 데이터 타입

리스트와 마찬가지로 사전은 많은 값의 모음이다.
리스트의 인덱스와는 달리 사전의 인덱스는 다양한 데이터 유형을 사용할 수 있다.
사전의 인덱스를 키라고 하며, 키와 그에 연관된 값을 키-값 쌍이라고 한다.
코드에서 사전은 중괄호 {}로 정의된다.


사전과 리스트

리스트와는 달리 사전의 아이템들은 순서가 없다.
사전은 순서가 없지만 키로 임의의 값을 쓸 수 있다.


사전 메소드

 메소드 

 기능 

 keys()

 사전의 키를 튜플로 돌려준다.

 values()

 사전의 값을 튜플로 돌려준다.

 items()

 사전의 키 - 값 쌍을 튜플로 돌려준다.

 get()

 키에 해당하는 값을 가져온다. 존재하지 않을 때 돌려줄 값을 설정할 수 있다.

 setdefault()

 특정 키에 값이 존재하지 않는 경우에 돌려줄 값을 설정한다. 





반응형

'프로그래밍 > Python' 카테고리의 다른 글

7. 정규 표현식  (0) 2019.01.09
6. 문자열 다루기  (0) 2019.01.08
4. 리스트와 튜플  (0) 2019.01.06
3. 함수  (0) 2019.01.06
2. 흐름 제어  (0) 2019.01.04
반응형

* 이 포스트는 "파이썬 프로그래밍으로 지루한 작업 자동화하기" 의 내용을 참조해서 작성하였습니다.

* 파이썬 3.3을 기준으로 작성하였습니다.




리스트 


- 순서를 가진 여러 가지 값의 배열

- [] (대괄호) 로 표기

- 쉼표를 구분자로 하여 리스트에 아이템들을 초기화 할 수 있음

- 아이템들의 타입이 달라도 상관 없음


>>> [1, 2, 3]

>>> ['a', 'b', 'c']

>>> [1, True, 'A', [1, 2, 3]]



인덱스를 이용해서 리스트의 개별 아이템 얻기


리스트 이름에 대괄호를 사용해서 0부터 시작하는 정수로 순차적인 접근이 가능하다.


>>> test = ['a', 'b', 'c']

>>> test[0]

'a'

>>> test[1]

'b'

>>> test[2]

'c'


리스트 값의 개수를 초과하는 인덱스를 사용하면 IndexError 오류가 발생한다.


인덱스는 정수값만 가능하며, 그 이외의 타입에는 TypeError 오류가 발생한다.


음수 인덱스도 사용이 가능하며, -1은 리스트의 마지막 값을 뜻하고, -2는 리스트의 끝에서 두 번째 값을 의미힌다.



부분 리스트


- 슬라이스를 이용해서 부분 리스트를 얻을 수 있다.

- 리스트 이름 [시작 인덱스 : 포함하지 않는 마지막 인덱스] 으로 정의 한다.


>>> test = ['a', 'b', 'c']

>>> test[0:3]

['a', 'b', 'c']

>>> test[0:2]

['a', 'b']

>>> test [1:3]

['b', 'c']

>>> test [0:-1]

['a', 'b', 'c']


콜론(:)을 기준으로 앞의 값을 비워두면 앞의 값은 0으로 처리된다.

콜론(:)을 기준으로 뒤의 값을 비워두면 뒤의 값은 리스트 길이 혹은 -1로 처리된다.



리스트 변경


인덱스를 지정해서 할당을 하면 값이 변경된다.


>>> test = [1, 2, 3]

>>> test[0] = 'a'

>>> test

['a', 2, 3]



리스트 병합


>>> [1, 2, 3] + ['a', 'b', 'c']

[1, 2, 3, 'a', 'b', 'c']


>>> ['a', 'b'] * 2

['a', 'b', 'a', 'b']



리스트 값 제거


del 명령어를 사용한다.


>>> test = [1, 2, 3]

>>> del test[1]

>>> test

[1, 3]



다중 할당


한 줄의 코드로 리스트 안에 있는 값을 여러 변수에 할당한다.


>>> test = [1, 2, 3]

>>> a, b, c = test

>>> a

1

>>> b

2

>>> c

3



리스트 메소


메소드는 함수와 기능은 같지만 객체 내에 정의되어 있는 멤버 함수를 메소드라고 한다.


 메소드 

 기능 

 index()

 리스트 내에 있는 값의 첫번째 인덱스를 리턴한다. 

 append()

 리스트에 새 값을 마지막에 추가한다.

 insert()

 리스트에 새 값을 지정한 인덱스에 추가한다.

 remove()

 리스트 내에서 값을 찾아서 첫번째로 나오는 값을 제거한다. 

 sort()

 리스트 안의 값을 정렬한다. (reverse 키워드로 역순 정렬 가능)



튜플 (tuple)


- 리스트와 비슷하지만 한 번 정의되면 변경이 불가능하다.

- () 로 표기



리스트와 튜플의 전환


list() 함수를 이용하면 튜플에서 리스트를 생성해 준다.


>>> list(('a', 'b', 'c'))

['a', 'b', 'c']


tuple() 함수를 이용하면 리스트에서 튜플을 생성해 준다.


>>> tuple([1, 2, 3])

(1, 2, 3)



참조 전달


정수형, 숫자형, 문자열 값을 매개 변수로 함수를 호출하는 경우, 해당 값은 파라미터 변수로 복사된다.

그 외의 타입을 매개 변수로 함수를 호출하면, 해당 타입의 참조가 파라미터로 전달된다. 

(참조 값은 복사되어도 같은 실제 값을 가리키게 된다.)



copy() vs deepcopy()


리스트 등의 데이터의 사본을 만들기 위해서는 copy 라이브러리에 있는 copy() 혹은 deepcopy() 명령어를 사용할 수 있다.

리스트의 모든 아이템이 정수형, 숫자형, 문자열 값으로만 되어 있다면 copy() 를 쓰는 것으로 충분하지만, 아이템에 다른 리스트나 튜플 등이 들어 있다면 deepcopy() 를 사용해야 제대로 사본이 생성된다. 




반응형

'프로그래밍 > Python' 카테고리의 다른 글

6. 문자열 다루기  (0) 2019.01.08
5. 사전 (Dictionary)  (0) 2019.01.07
3. 함수  (0) 2019.01.06
2. 흐름 제어  (0) 2019.01.04
1. 파이썬 기초  (0) 2019.01.04
반응형

수학에서 에라토스테네스의 체는 소수를 찾는 방법입니다. 고대 그리스 수학자 에라토스테네스가 발견하였습니다.

 

방법은 다음과 같습니다.

 

1. 2부터 소수를 구하고자 하는 구간의 모든 수를 나열합니다.

2. 2는 소수이므로 소수 리스트에 적어두고,

3. 자기 자신을 제외한 2의 배수를 모두 지웁니다.

4. 남아 있는 수 가운데 3은 소수 이므로 소수 리스트에 적어두고,

5. 자기 자신을 제외한 3의 배수를 모두 지웁니다.

6. 위의 과정을 반복하면 구하는 구간의 모든 소수를 찾을 수 있습니다.

 

다음은 파이썬을 이용한 예시이며, 소수인지를 체크할 수 있는 배열 정보와 소수 리스트를 리턴해 줍니다.

 

def findPrimes(n):
        tPrimes = [2]
        tArr = [True] * (n+1)
        tArr[0], tArr[1] = [False] * 2

        for i in xrange(4, n+1, 2):
                tArr[i] = False

#        for i in xrange(3, n+1, 2):
#                j = 3
#                while True:
#                        tmp = i * j
#                        if (tmp > n):
#                                break
#                        tArr[tmp] = False
#                        j += 2

        for i in xrange(3, int(n**0.5)+1, 2):
            if (tArr[i]):
                for j in xrange(i**2, n+1, 2*i):
                    tArr[j] = False

        for i in xrange(3, n+1, 2):
                if (tArr[i]):
                        tPrimes.append(i)

        return tArr, tPrimes

 

반응형

'알고리즘 (기초)' 카테고리의 다른 글

Pell's Equation  (0) 2020.04.28
Combination 소인수 분해  (0) 2019.10.04
유클리드 호제법을 이용한 최대공약수 (GCD) 구하기  (0) 2019.08.28
팩토리얼에서의 지수 계산  (0) 2018.09.09
오일러 피 함수  (0) 2018.08.30

+ Recent posts