python 리스트 요소를 일정 규칙에 맞게 join하는 방법
조회수 456회
# 파싱전
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번 째마다 "&"가 아닌 "&&" 로 리스트를 바꾸고 싶습니다.
단 마지막 요소에는 &나 && 없어야합니다.
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)
댓글 입력