Мені потрібно генерувати рядок із п символами в Python. Чи є відповідь в одному рядку, щоб досягти цього за допомогою існуючої бібліотеки Python? Наприклад, мені потрібна рядок з 10 літер:
string_val = 'abcdefghij'
Мені потрібно генерувати рядок із п символами в Python. Чи є відповідь в одному рядку, щоб досягти цього за допомогою існуючої бібліотеки Python? Наприклад, мені потрібна рядок з 10 літер:
string_val = 'abcdefghij'
Відповіді:
Щоб просто повторити той самий лист 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))
Перші десять малих літер є string.lowercase[:10]
(якщо ви вже імпортували стандартний модуль бібліотеки string
, звичайно ;-).
Інші способи "зробити рядок з 10 символів": 'x'*10
(всі десять символів будуть малі x
s ;-), ''.join(chr(ord('a')+i) for i in xrange(10))
(перші десять малих літер знову) тощо, тощо; тощо ;-).
.lowercase
( ascii_lowercase
є останнім часом, як і в Python 3).
Чому "одна лінія"? Ви можете помістити що-небудь на одну лінію.
Припустимо, що ви хочете, щоб вони починалися з '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'