[python] 파이썬에서 한 줄의 코드로 n 개의 문자열을 어떻게 만듭니 까?

파이썬에서 n 문자로 문자열을 생성해야합니다. 기존 Python 라이브러리를 사용하여 한 가지 답변을 얻을 수 있습니까? 예를 들어, 10 글자 문자열이 필요합니다.

string_val = 'abcdefghij'



답변

같은 문자를 10 번 반복하려면 :

string_val = "x" * 10  # gives you "xxxxxxxxxx"

그리고 n임의의 소문자 와 같이 더 복잡한 것을 원한다면 여전히 한 줄의 코드입니다 (import 문을 세지 않고 정의 n).

from random import choice
from string import ascii_lowercase
n = 10

string_val = "".join(choice(ascii_lowercase) for i in range(n))


답변

처음 10 개의 소문자는 이전에 string.lowercase[:10]표준 라이브러리 모듈을 가져온 경우 string물론입니다.

“문자열을 10 자로 만드는”다른 방법 : 'x'*10(10 개의 문자는 모두 소문자 xs ;-), ''.join(chr(ord('a')+i) for i in xrange(10))(첫 번째 소문자는 다시 소문자 등); 등).


답변

당신이 편지를 원한다면 :

 'a'*10  # gives 'aaaaaaaaaa'

연속 문자를 원하는 경우 (최대 26 자) :

 ''.join(['%c' % x for x in range(97, 97+10)])  # gives 'abcdefghij'


답변

왜 “한 줄”입니까? 한 줄에 무엇이든 맞출 수 있습니다.

‘a’로 시작하고 매번 한 문자 씩 증가한다고 가정하면 (포장> 26) 다음은 한 줄입니다.

>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
>>> mkstring(10)
'abcdefghij'
>>> mkstring(30)
'abcdefghijklmnopqrstuvwxyzabcd'


답변

이것은 약간의 질문 일지 모르지만 생성 된 문자열의 임의성에 관심이있는 사람들에게는 내 대답은 다음과 같습니다.

import os
import string

def _pwd_gen(size=16):
    chars = string.letters
    chars_len = len(chars)
    return str().join(chars[int(ord(c) / 256. * chars_len)] for c in os.urandom(size))

더 많은 통찰력을 얻으려면 다음 답변random.py출처를 참조하십시오 .


답변

반복되는 문자를 사용할 수 있으면 *연산자를 사용할 수 있습니다 .

>>> 'a'*5

'aaaaa'


답변