>

문자열을 결합하고 싶습니다 my_string = "I am good."  같은 my_string을 3 번 인쇄해야합니다. my_string*3  각 문장 사이에 공백이 있습니다. 어떻게합니까? str.join(' ',my_string*3) 와 같은 것 ?

이것은 기본적인 질문이지만 알고 싶습니다.

미리 감사합니다 Sammed

  • 답변 # 1

    당신은 꽤 가깝습니다. 이것을 시도하십시오 :

    >>> my_string = "I am good."
    >>> " ".join([my_string]*3)
    'I am good. I am good. I am good.'
    
    

    [my_string]*3 가 필요합니다   my_string*3 대신  메시지를 세 번 포함하는 하나의 큰 문자열을 갖는 대신 문자열을 포함하는 목록을 세 번 (결합한 후) 원하는 목록을 원하기 때문입니다.

    또한 " ".join(a)   str.join(" ", a) 의 속기 .

  • 답변 # 2

    작동해야합니다 :

    " ".join((my_string,) * 3)
    
    

  • 답변 # 3

    " ".join([my_string for i in range(3)]

  • 답변 # 4

    또는 문자열을 곱하면 문자열의 사본이 연결된다는 사실을 활용할 수 있습니다. 문자열 끝에 공백을 추가하고 join 를 사용하지 않고 곱하십시오. .

    >>> my_string = "I am good."
    >>> (my_string+' ')*3
    'I am good. I am good. I am good. '
    
    

  • 답변 # 5

    다른 방법이 서로 어떻게 경쟁하는지 확인하기 위해 성능 검사를 수행했습니다.

    import time
    def forLoop(s):
      start = time.time()
      z = ""
      for i in range(ITERS):
        z += s
      return time.time()-start
    def listJoin(s):
      start = time.time()
      "".join([s]*ITERS)
      return time.time()-start
    def strMultiply(s):
        start = time.time()
        s*ITERS
        return time.time()-start
    ITERS = 10000
    my_string = "I am good."
    a, b, c = 0, 0, 0
    for i in range(ITERS):
        a += forLoop(my_string)
        b += listJoin(my_string)
        c += strMultiply(my_string)
    print("For loop:", a)
    print("List join:", b)
    print("String multiplication:", c)
    
    

    출력 :

    For loop: 5.720043182373047
    List join: 0.8931441307067871
    String multiplication: 0.025591611862182617
    
    

관련 자료

  • 이전 python 2.7 - 터미널에 대한 GitLab 인증
  • 다음 hex - C에서 16 진수를 uint8_t로 16 진수 scanf [중복]