Skip to content

생물정보학 파이썬 컬렉션 #

Find similar titles

1회 업데이트 됨.

Edit

Chapter 3. 컬렉션(Collections) #

컬렉션이란? #

파이썬에서는 기본적인 데이터의 집합 타입이 있는데 이를 컬렉션이라고 한다.컬렉션에는 List, Tuple, Dictionary, Set 등 이 있다.

  • x in coll -> x가 coll에 있을 때 True
  • x not in coll -> x가 coll에 없을 때 True
  • any(coll) -> 어떤 요소가 coll에 있으면 True
  • all(coll) -> 모든 요소가 coll에 있으면 True
  • len(coll) -> 요소의 길이
  • max(coll[, key=function]) -> 요소의 최대 값
  • min(coll[, key=function]) -> 요소의 최소 값
  • sorted(coll[, keyfn][, reverseflag]) -> 각 요소를 비교하여 정렬

Sets #

집합, 즉 파이썬에서는 Set이라고 하는 데이터 타입이 있다. set은 순서와 상관없는 컬렉션이다. 또한 중복된 값을 넣을 수 없는데 집합이기 때문에 허용이 되지 않는다. 혹 중복 데이터가 있다면 이를 제거하고 유니크한 집합을 만들어 낸다. set 은 {}, tuple은 (), list는 [] 로 데이터를 지정한다. 만약 비어 있는 set을 만들고자 하면 {} 와 같이 사용하면 되지 않고 set() 함수를 이용하여 만들어야 한다. 혹은 리스트나 튜플을 집합으로 변경하고자 할때도 set()으로 만들면 된다.

자 먼저 다음과 같이 셋을 만든다. set()함수를 이용하면 되는데 이는 {} 와 같이 만든 것과 동일한 효과를 가진다. 먼저 set() 함수에 일련의 서열을 입력하고 집합을 만들면 중복된 요소는 제거되고 만들어진다. 결과를 보면 다음과 같다.

>>> set('TCAGTTAT') 
{'A', 'C', 'T', 'G'}
>>> {'A', 'C', 'T', 'G'}

또는 다음과 같이 {}를 이용해서 만들 수 도 있다. 이후 집합은 정렬된 형태로 값을 저장하고 있다.

>>> DNABases = {'T', 'C', 'A', 'G'}
>>> DNABases
{'A', 'C', 'T', 'G'}
>>> RNABases = {'U', 'C', 'A', 'G'}
>>> RNABases
{'A', 'C', 'U', 'G'}


>>> {'TCAG'} {'TCAG'}
>>> {'TCAG', 'UCAG'} {'UCAG', 'TCAG'}
>>>

set은 집합 연산을 할 수 있다. 우리가 흔히 들어본 합집합, 교집합, 멱집합, 차집합 등의 연산을 수행할 수 있다.

비교 #

  • set1 <= set2 -> subset, set1의 요소가 모두 set2에 있을 때 True
  • set1 < set2 -> set1의 값이 모두 set2에 있으면 작은 집합
  • set1 >= set2 -> upperset . set2의 값이 모두 set1에 있으면 True
  • set1 > set2 -> set2의 값이 모두 set1에 있으면서 더 큰 집합

연산 #

  • set1 | set2 -> 합집합(union)
  • set1 & set2 -> 교집합(intersction)
  • set1 - set2 -> 차집합, set1에만 있는 것 (difference)
  • set1 ^ set2 -> set1,2의 합집합에서 set1, 2의 교집합을 뺀 차집합 (symmetric_difference)

  • set1 |= set2 -> 업데이트, .update()

  • set1 &= set2 -> 업데이트, .intersection_update()
  • set1 -= set2 -> 업데이트, .difference_update()
  • set1 ^= set2 -> 업데이트, .symmetric_difference_update()
  • add() -> 추가
  • remove() -> 제거, 만약 해당 요소가 없다면 에러
  • discard() -> 제거, 해당 요소가 없어도 에러 발생 안함.

두 서열이 있을 때 비교 하는 set을 이용하여 코딩을 해보면 다음과 같이 해 볼 수 있다. DNAbases = set('TCAGtcag') RNAbases = set('UCAGucag')

def validate_base_sequence(base_sequence, RNAflag = False):
    return set(base_sequence) <= (RNAbases if RNAflag else DNAbases)

Incoming Links #

Related Articles #

Suggested Pages #

0.0.1_20231010_1_v71