Python n karakterli bir dize oluşturmak gerekiyor. Mevcut Python kütüphanesi ile bunu başarmak için tek satırlık bir cevap var mı? Örneğin, 10 harfli bir dizeye ihtiyacım var:
string_val = 'abcdefghij'
Python n karakterli bir dize oluşturmak gerekiyor. Mevcut Python kütüphanesi ile bunu başarmak için tek satırlık bir cevap var mı? Örneğin, 10 harfli bir dizeye ihtiyacım var:
string_val = 'abcdefghij'
Yanıtlar:
Aynı mektubu 10 kez tekrarlamak için:
string_val = "x" * 10 # gives you "xxxxxxxxxx"
Ve nrastgele küçük harfler gibi daha karmaşık bir şey istiyorsanız , yine de yalnızca bir kod satırıdır (içe aktarma ifadelerini saymaz ve tanımlamaz n):
from random import choice
from string import ascii_lowercase
n = 10
string_val = "".join(choice(ascii_lowercase) for i in range(n))
İlk on küçük harf şöyledir string.lowercase[:10](standart kütüphane modülünü stringdaha önce içe aktardıysanız, elbette ;-).
"10 karakterden oluşan bir dize" oluşturmanın diğer yolları: 'x'*10(on karakterin tümü küçük harf olacaktır x;-), ''.join(chr(ord('a')+i) for i in xrange(10))(yine ilk on küçük harf), vb. ;-).
.lowercase( ascii_lowercaseson Python 2'lerde ve Python 3'te).
Neden "bir satır"? Her şeyi bir hatta sığdırabilirsiniz.
'A' ile başlamalarını ve her seferinde bir karakter artırmayı (> 26 sarma ile) artırmak istediğinizi varsayarsak, bir satır:
>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
>>> mkstring(10)
'abcdefghij'
>>> mkstring(30)
'abcdefghijklmnopqrstuvwxyzabcd'
Bu biraz soru dışı olabilir, ancak üretilen dizenin rastgele olmasıyla ilgilenenler için cevabım şöyle olacaktır:
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))
Daha fazla bilgi için bu cevaplara ve random.pykaynağına bakın.
Tekrarlanan harfleri kullanabiliyorsanız, *operatörü kullanabilirsiniz :
>>> 'a'*5
'aaaaa'