파이썬 염기서열 리스트 요소 변형하기에 대해 질문드립니다.

조회수 775회

DNA 염기서열을 파이썬으로 나타내는 간단한 코드를 짜고있어요.

염기서열을 입력 받으면 리스트에 저장한 다음에 for문과 if문으로 규칙에 따라 리스트 요소를 변형한 뒤에 바뀐 리스트를 출력하는 코드입니다. (규칙: A --> T, T -->A)

그런데 제가 짠 것 처럼 실행하면 for문이 실행되며 a[0]만 바꾸고 a[1], a[2]는 건드리지 않더라구요.

그래서 제가 A T A를 입력해도 a[0]에서만 if문이 적용되어서 ['T', 'T', 'A'] 이렇게 출력되요. (규칙대로 올바르게 출력되면 ['T', 'A', 'T']로 출력되어야 해요) 어떻게 해야 a[1], a[2]에도 if문이 적용되어서 규칙에 따라 올바르게 출력될까요.

DNA_list = list(map( str, input("3염기 서열을 입력하세요.").split())) 
a = DNA_list

for i in a:
  if (i == "A") :
    a[a.index("A")] = "T"

  elif (i == "T") :
    a[a.index("T")] = "A" 

  else :
    a = "염기서열을 잘 못 입력하셨습니다"

print(a)

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    a.index("A") 라고하면 언제나 첫번째에 나오는 인덱스만 알려주죠. 그래서 첫번째 것만 바뀌게 되겠죠. 코드에 다른 문제도 있지만 일단 그래요.

    이런 건 변환할 매핑규칙을 가지고 그것대로 하나씩 매핑해주기만 하면 되겠죠. 리스트 컴프리헨션을 씁시다.

    매핑규칙 = {"A":"T", "T":"A"}
    
    seq = [ 매핑규칙[ele] for ele in seq ]
    
    

    대충 이렇게 하면 될겁니다.

    • 아 해결되었어요! 감사합니다 최윤서 2022.1.5 13:07

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)