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


148

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

string_val = 'abcdefghij'

23
난독 화 컨테스트를 코딩하려면 "한 줄의 코드로"남겨 두십시오. 문제에 대한 해결책이 자연스럽게 한 줄로 작성되면 그럴 것입니다. 그렇지 않으면 안됩니다. 자체 목표로 사용하는 것은 불쾌한 코드의 보장 경로입니다.
Glenn Maynard

3
물론, 이것은 숙제입니다. 이 경우 "한 줄의 코드로"남겨두고 솔직하고 [homework] 태그를 포함하십시오.
S.Lott

5
실제로 숙제 문제는 아니며 테스트 스크립트에 n 길이의 문자열이 필요했습니다. 파이썬에서 char에 n을 곱할 수 있다는 것을 잊었습니다. 여기서 n은 내가 원하는 것을 달성하기 위해 양의 정수입니다.
Thierry Lam

답변:


310

같은 문자를 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))

9

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

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


6
파이썬 3.1.1에서는 실제로 string.ascii_lowercase입니다.
Lasse V. Karlsen

1
python 3은 제거되었습니다 .lowercase( ascii_lowercasePython 3뿐만 아니라 최근 Python 2에도 있습니다).
Alex Martelli

5

당신이 편지를 원한다면 :

 'a'*10  # gives 'aaaaaaaaaa'

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

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

3

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

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

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

2
한 줄에 무엇이든 넣을 수 있습니까? 꽤 주장, re : Python :)
Gregg Lind

6
Gregg : Python은 세미콜론을 명령문 구분 기호로 허용하므로 원하는 경우 전체 프로그램을 한 줄에 넣을 수 있습니다.
John Millikin

2
세미콜론으로는 임의의 흐름 제어를 수행 할 수 없습니다. 예를 들어 중첩 루프.
재귀

3

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

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출처를 참조하십시오 .


2

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

>>> 'a'*5

'aaaaa'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.