В Python, как мне создать строку из n символов в одной строке кода? - PullRequest
112 голосов
/ 15 сентября 2009

Мне нужно создать строку с n символов в Python. Есть ли однострочный ответ для достижения этого с существующей библиотекой Python? Например, мне нужна строка из 10 букв:

string_val = 'abcdefghij'

Ответы [ 6 ]

249 голосов
/ 15 сентября 2009

Чтобы просто повторить одну и ту же букву 10 раз:

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

И если вам нужно что-то более сложное, например n случайные строчные буквы, это все равно всего одна строка кода (не считая операторов импорта и определяя n):

from random import choice
from string import ascii_lowercase
n = 10

string_val = "".join(choice(ascii_lowercase) for i in range(n))
9 голосов
/ 15 сентября 2009

Первые десять строчных букв: string.lowercase[:10] (если вы ранее импортировали стандартный библиотечный модуль string, конечно; -).

Другие способы «сделать строку из 10 символов»: 'x'*10 (все десять символов будут строчными x s ;-), ''.join(chr(ord('a')+i) for i in xrange(10)) (снова первые десять строчных букв) и т. Д .; -.)

4 голосов
/ 15 сентября 2009

если вам нужны буквы:

 'a'*10  # gives 'aaaaaaaaaa'

, если вам нужны последовательные буквы (до 26):

 ''.join(['%c' % x for x in range(97, 97+10)])  # gives 'abcdefghij'
3 голосов
/ 15 сентября 2009

Почему "одна линия"? Вы можете поместить все что угодно в одну строку.

Предполагая, что вы хотите, чтобы они начинались с 'a' и увеличивались на один символ каждый раз (с переносом> 26), вот строка:

>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
>>> mkstring(10)
'abcdefghij'
>>> mkstring(30)
'abcdefghijklmnopqrstuvwxyzabcd'
2 голосов
/ 15 сентября 2009

Если вы можете использовать повторяющиеся буквы, вы можете использовать оператор *:

>>> 'a'*5

'aaaaa'
1 голос
/ 17 января 2014

Это может быть немного не вопрос, но для тех, кто интересуется случайностью сгенерированной строки, мой ответ будет:

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 для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...