Tôi cần tạo một chuỗi có n ký tự trong Python. Có một câu trả lời một dòng để đạt được điều này với thư viện Python hiện có không? Chẳng hạn, tôi cần một chuỗi gồm 10 chữ cái:
string_val = 'abcdefghij'
Tôi cần tạo một chuỗi có n ký tự trong Python. Có một câu trả lời một dòng để đạt được điều này với thư viện Python hiện có không? Chẳng hạn, tôi cần một chuỗi gồm 10 chữ cái:
string_val = 'abcdefghij'
Câu trả lời:
Để đơn giản lặp lại cùng một chữ cái 10 lần:
string_val = "x" * 10 # gives you "xxxxxxxxxx"
Và nếu bạn muốn một cái gì đó phức tạp hơn, như n
các chữ cái viết thường ngẫu nhiên, nó vẫn chỉ là một dòng mã (không tính các câu lệnh nhập và định nghĩa n
):
from random import choice
from string import ascii_lowercase
n = 10
string_val = "".join(choice(ascii_lowercase) for i in range(n))
Tất nhiên, mười chữ cái viết thường là string.lowercase[:10]
(nếu bạn đã nhập mô-đun thư viện tiêu chuẩn string
trước đó, dĩ nhiên ;-).
Các cách khác để "tạo một chuỗi gồm 10 ký tự": 'x'*10
(tất cả mười ký tự sẽ là chữ thường x
s ;-), ''.join(chr(ord('a')+i) for i in xrange(10))
(mười chữ cái viết thường đầu tiên một lần nữa), v.v., v.v .-).
.lowercase
( ascii_lowercase
trong Python 2 gần đây cũng như trong Python 3).
Tại sao "một dòng"? Bạn có thể phù hợp với bất cứ điều gì trên một dòng.
Giả sử bạn muốn họ bắt đầu bằng 'a' và tăng thêm một ký tự mỗi lần (với gói> 26), đây là một dòng:
>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
>>> mkstring(10)
'abcdefghij'
>>> mkstring(30)
'abcdefghijklmnopqrstuvwxyzabcd'
Đây có thể là một câu hỏi nhỏ, nhưng đối với những người quan tâm đến tính ngẫu nhiên của chuỗi được tạo, câu trả lời của tôi sẽ là:
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))
Xem những câu trả lời và random.py
nguồn của nó để hiểu rõ hơn.
Nếu bạn có thể sử dụng các chữ cái lặp đi lặp lại, bạn có thể sử dụng *
toán tử:
>>> 'a'*5
'aaaaa'