Skip to content

생물정보학 파이썬 표현식 #
Find similar titles

Chapter 1. 기초다지기 #

표현식(Expression) #

파이썬에서 주요 자료형은 논리, 숫자, 문자이다. 이들의 조작을 위해서 +, -, * , / 와 같은 형식으로 데이터를 조작한다. 그중 먼저 숫자 조작이다.

연산자(Numeric Operators) #

숫자는 +, -, * , /, //, % 를 자주 사용한다. + 는 덧셈, -는 빼기, 는 곱하기, /는 나누기, * 는 제곱승, //는 몫, %는 나머지를 반환한다. 다음의 간단한 예제이다. >>> −1 -1 >>> 4 + 2 6 >>> 4 − 1 3

덧셈 및 뺄셈 그리고 음수화의 예제이다.

>>> 4 * 3
12

>>> 2 ** 10
1024

곱하기 및 제곱승의 예제이다.

>>> 11 / 4
2.75
>>> 11 // 4
2
>>> 11 % 4
3

나누기, 몫, 나머지의 예제이다.

>>> 2.0 + 1
3.0
>>> 12 * 2.5
30.0
>>> 7.5 // 2
3.0

곱하기, 나누기는 int 및 float 간에 상호 호환이 가능하다. 즉 int 와 Float의 계산은 int가 아니라 Float 형태로 결과를 반환한다.

>>> .009
.009
>>> .01
.01
>>> .029
.029
>>> .03
.03
>>> .001
.001

특이 한점은 파이썬에서 Float의 형태에서 데이터를 조작하면 근사치를 계산한 값으로 결과가 나오게 된다. 즉 1/3 - 0.33333333...과 같은 형태로 계산을 하여 결과를 반환한다.

>>> .03 - .029
0.0009999999999999974
>>> .01 - .009
0.0010000000000000009

논리연산자(Logical operations) #

파이썬에서는 다른 언어와 마찬가지로 bool 타입에 기반을 둔 Boolean logic을 가지고 있다. 즉 and, or, not이다. 다른 언어와 달리 &&, || 와 같은 특수 문자를 사용하지 않고 일반적인 형태로 구현한다. 예제는 다음과 같다.

>>> not True
False
>>> not False
True
>>> True and True
True
>>> True and False
False
>>> True or True
True
>>> True or False
True
>>> False and False
False
>>> False or True

위의 예제에서 and, or 의 관계를 이해하면 된다. 참과 참은 참, 참과 거짓은 거짓 등.. 특히 문자열 '', 0 은 False이므로 다음과 같이 유의해야 한다.

>>> '' and 'A'
'' # Not False: '' is a false value
>>> 0 and 1 or 2 # Read as (0 and 1) or 2
2

파이썬에서는 if 조건에서도 논리 연산을 진행한다. 즉 다음과 같이 어떤 조건이 주어졌을 때 True, False를 계산해서 결과를 반환한다.

>>> 'yes' if 2 - 1 else 'no'
'yes'
>>> 'no' if 1 % 2 else 'no'
'no'

즉 다음과 같이 계산을 수행했을 때 해당 값을 비교하여 결과를 반환한다.

>>> 2 == 5 // 2
True
>>> 3 > 13 % 5
False
>>> 'one' < 'two'
True
>>> 'one' != 'one'
False

마찬가지로 문자열도 비교를 통해서 <, >의 결과를 얻을 수 있다.

문자열 조작(String operators) #

파이썬의 문자열 조작은 주어진 문자열에 특정 문자가 포함되어 있는지 확인하는 in 기능을 콜 할 수 있다. 이는 아래 예제와 같이 특정 서열에 TATA box 서열이 포함이 되어 있는지 확인한다. 반대로 포함되어 있지 않은 경우에는 not in을 사용한다.

>>> 'TATA' in 'TATATATATATATATATATATATA'
True
>>> 'AA' in 'TATATATATATATATATATATATA'
False
>>> 'AA' not in 'TATATATATATATATATATATATA'
True

주어진 두 서열을 이을 때는 +를 사용하면 된다. 그러면 앞에서 부터 뒤로 이어진 문자열을 반환한다.

>>> 'AC' + 'TG'
'ACTG'
>>> 'aaa' + 'ccc' + 'ttt' + 'ggg'
'aaaccctttggg'

또한 반복 문자를 지정할 수 있다. 특정 문자열에 * 기호를 이용하여 수를 곱하면 주어진 수만큼 반복되는 서열을 만들 수가 있다. 아래 예제에서는 12반복이다.

>>> 'TA' * 12
'TATATATATATATATATATATATA'
>>> 6 * 'TA'
'TATATATATATA'

문자열 추출(Subscription) #

문자열 추출은 인덱스 기능을 이용한다. 주어진 문자열에서 해당하는 하나의 문자열을 반환한다. 즉 []안에 주어진 숫자의 값을 이용하여 추출하는데 이를 인덱스(index)라고 부른다. 인덱스를 계산하는 방법은 다음과 같다. 앞에서 부터 0, 1, 2, 3으로 시작하고 뒤에서부터 -1, -2, -3 으로 계산된다. 따라서 0 인 경우에는 첫번째 문자열을 반환한다.

>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[0]
'M'

1인 경우에는 2번째 문자인 N을 반환한다.

>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[1]
'N'

-1인 경우에는 맨 뒤의 문자 중 첫째인 A를 반환한다.

>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[−1]
'A'
>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[−5]
'D'

[]안에는 계산식이 들어갈 수도 있다.

>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[7 // 2]
'K'

슬라이싱(Slicing) #

특히 문자열 중에 두개 이상을 추출하거나 특정 범위에서 추출할 경우에는 다음과 같이 슬라이싱을 사용한다. 앞서 사용했던 index를 통해 [x:y:z]와 같은 형태로 사용한다. x는 처음 시작 인덱스 값, y는 마지막 인덱스값, z는 배수 즉 건너 뛰는 인덱스의 수이다. 다음 예제는 주어진 서열에서 1~4까지의 문자 3개 NKM를 반환한다. 즉 마지막 인덱스 값은 포함하지 않는다.

>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[1:4]
'NKM'

다음은 4 인덱스에서 -1 즉 마지막 문자 앞까지 DLVADVAEKTDLSKAKATEVIDAVF를 반환한다.

>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[4:-1]
'DLVADVAEKTDLSKAKATEVIDAVF'

다음은 -5~-4 즉 한문자 D를 반환한다.

>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[-5:-4]
'D'

다음은 5~5까지 반환하는데 범위가 주어지지 않았기 때문에 '' 공백을 반환한다.

>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[5:5]
''

다음의 예제에서 주의할 사항은 범위가 바뀌면 계산하지 못한다. 즉 앞의 범위지정 인덱스가 뒤의 인덱스 지정값보다 빨라야 한다. 정상적으로 출력하기 위해서는 [-6:-4]와 같은 형태로 지정되어야 한다.

>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[-4:-6]
''

슬라이싱 중 첫째 값 즉 시작 값이 생략이 되면 처음부터, 두번째 값 즉 종료값이 생략이 되면 마지막까지 자동 인식한다. 결과는 다음과 같다.

>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[:8]
'MNKMDLVADVAEKTDLSKAKAT'
>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[9:]
>>> 'VAEKTDLSKAKATEVIDAVFA'

즉 생략된 값은 끝까지를 나타낸다. 범위 -1이 지정되면 마지막 앞 문자 즉 F까지 반환한다.

>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[9:-1]
'VAEKTDLSKAKATEVIDAVF

[:]와 같이 처음 값과 두번째 값이 생략되면 처음부터 끝까지 반환한다.

>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[:]
'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'

[x:y:z]과 같이 z 값이 주어지면 그 수만큼 건너뛴다. 즉 [0:9:3] 은 인덱스 0부터 9까지 추출하는데 그중 3의 배수에 해당하는 인덱스값만 반환한다. 결과는 다음과 같다.

>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[0:9:3]
'MMV'

[::-1]과 같이 표현된 경우에는 역서열을 반환한다. 상보 서열을 구할 때 서열을 뒤집는 것과 같이 주어진 서열에서 뒤집어 반대로 반환한다.

>>> 'MNKMDLVADVAEKTDLSKAKATEVIDAVFA'[::-1]
'AFVADIVETAKAKSLDTKEAVDAVLDMKNM'

Suggested Pages #

0.0.1_20140628_0