Dengan Python, bagaimana cara membuat string karakter n dalam satu baris kode?
148
Saya perlu membuat string dengan n karakter dalam Python. Apakah ada jawaban satu baris untuk mencapai ini dengan perpustakaan Python yang ada? Sebagai contoh, saya perlu string 10 huruf:
Biarkan "dalam satu baris kode" ke kontes kode kebingungan. Ketika solusi untuk masalah secara alami ditulis sebagai satu baris, itu akan menjadi; kalau tidak seharusnya tidak. Menggunakannya sebagai tujuan sendiri adalah jalur yang dijamin ke kode jahat.
Glenn Maynard
3
Kecuali, tentu saja, ini adalah pekerjaan rumah. Dalam hal ini, biarkan "dalam satu baris kode" tetapi jujur dan sertakan tag [pekerjaan rumah].
S.Lott
5
Ini sebenarnya bukan pertanyaan pekerjaan rumah, saya hanya membutuhkan string n panjang dalam skrip pengujian saya. Saya lupa bahwa dengan Python, char dapat dikalikan dengan n di mana n adalah bilangan bulat positif untuk mencapai apa yang saya inginkan.
Dan jika Anda menginginkan sesuatu yang lebih kompleks, seperti nhuruf kecil acak, itu masih hanya satu baris kode (tidak termasuk pernyataan impor dan mendefinisikan n):
from random import choice
from string import ascii_lowercase
n =10
string_val ="".join(choice(ascii_lowercase)for i in range(n))
Sepuluh huruf kecil pertama adalah string.lowercase[:10](jika Anda telah mengimpor modul perpustakaan standar stringsebelumnya, tentu saja ;-).
Cara lain untuk "membuat string 10 karakter": 'x'*10(semua sepuluh karakter akan menjadi huruf kecil xs ;-), ''.join(chr(ord('a')+i) for i in xrange(10))(sepuluh huruf kecil pertama lagi), dll, dll ;-).
Kenapa "satu baris"? Anda dapat memasukkan apa pun ke dalam satu baris.
Dengan asumsi Anda ingin mereka memulai dengan 'a', dan naik satu karakter setiap kali (dengan pembungkus> 26), inilah sebuah baris:
>>> mkstring =lambda(x):"".join(map(chr,(ord('a')+(y%26)for y in range(x))))>>> mkstring(10)'abcdefghij'>>> mkstring(30)'abcdefghijklmnopqrstuvwxyzabcd'
Jawaban:
Untuk hanya mengulangi huruf yang sama 10 kali:
Dan jika Anda menginginkan sesuatu yang lebih kompleks, seperti
n
huruf kecil acak, itu masih hanya satu baris kode (tidak termasuk pernyataan impor dan mendefinisikann
):sumber
Sepuluh huruf kecil pertama adalah
string.lowercase[:10]
(jika Anda telah mengimpor modul perpustakaan standarstring
sebelumnya, tentu saja ;-).Cara lain untuk "membuat string 10 karakter":
'x'*10
(semua sepuluh karakter akan menjadi huruf kecilx
s ;-),''.join(chr(ord('a')+i) for i in xrange(10))
(sepuluh huruf kecil pertama lagi), dll, dll ;-).sumber
.lowercase
(ascii_lowercase
dalam Python 2 terbaru dan Python 3).jika Anda hanya menginginkan surat:
jika Anda ingin huruf berurutan (hingga 26):
sumber
Kenapa "satu baris"? Anda dapat memasukkan apa pun ke dalam satu baris.
Dengan asumsi Anda ingin mereka memulai dengan 'a', dan naik satu karakter setiap kali (dengan pembungkus> 26), inilah sebuah baris:
sumber
Ini mungkin sedikit keluar dari pertanyaan, tetapi bagi mereka yang tertarik pada keacakan string yang dihasilkan, jawaban saya adalah:
Lihat jawaban ini dan sumber untuk informasi lebih lanjut.
random.py
sumber
Jika Anda dapat menggunakan huruf yang diulang, Anda dapat menggunakan
*
operator:sumber