python 리스트 요소를 일정 규칙에 맞게 join하는 방법

조회수 444회
# 파싱전
alpha_list = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P"]

# 파싱 후 
alpha_list = ["A", "&", "B", "&", "C", "&", "D", "&&", "E", "&", "F", "&", "G", "&", "H", "&&", "I", "&", "J", "&", "K", "&", "L", "&&", "M", "&", "N", "&", "O", "&", "P"]

위 리스트 처럼 A~P까지 알파벳 문자열이 들어있는 리스트에
요소 사이마다 "&"를 추가하고 요소 4번 째마다 "&"가 아닌 "&&" 로 리스트를 바꾸고 싶습니다.
단 마지막 요소에는 &나 && 없어야합니다.

  • 지금까지 어떤 걸 시도해보셨나요? 엽토군 2020.11.11 15:45
  • 단순히 for문에 n값 % 4가 0인 것에 대해 &&를 추가했다만 맨 마지막에 & 또는 &&를 제외하기 위해 코드가 길어지고 김재민 2020.11.11 16:17
  • 전반적으로 코드가 길어지는 것보다 더 깔끔하게 수행 가능한 방법이 있을까해서 질문 올립니다. 김재민 2020.11.11 16:17

2 답변

  • >>> l2
    ['A', '&', 'B', '&', 'C', '&', 'D', '&&']
    >>> l2 = l2[:-1]
    >>> l2
    ['A', '&', 'B', '&', 'C', '&', 'D']
    

    어렵게 생각하지 마세요. i%4 로 조건 따져서 넣는 것 충분히 좋은 솔루션입니다.

    마지막에 쓸데없는 게 나왔다? 마지막 것만 제거하면 됩니다. 멍청할 정도로 쉬운 코드가 좋은 코드입니다.

    • 번외: scala 로 해보기
    val alpha_list = Seq("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P")
    
    def makeString(s: Seq[String]): Seq[String] = {
        @annotation.tailrec
        def _execute(s: Seq[String], acc: Seq[String] = Seq.empty, i: Int = 1): Seq[String] = s match {
            case Nil => acc.dropRight(1)
            case x :: xs => _execute(xs, acc ++ (if(i % 4 == 0) Seq(x, "&&") else Seq(x, "&")), i + 1)
        }
        _execute(s)
    }
    
    makeString(alpha_list)
    => Seq[String] = List(A, &, B, &, C, &, D, &&, E, &, F, &, G, &, H, &&, I, &, J, &, K, &, L, &&, M, &, N, &, O, &, P)
    

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

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

(ಠ_ಠ)
(ಠ‿ಠ)