在Python中,如何在一行代码中创建一个包含n个字符的字符串?

Thi*_*Lam 128 python string

我需要在Python中生成一个包含n个字符的字符串.有没有一个答案可以用现有的Python库实现这一目标?例如,我需要一个10个字母的字符串:

string_val = 'abcdefghij'
Run Code Online (Sandbox Code Playgroud)

Eli*_*ght 279

简单地重复相同的字母10次:

string_val = "x" * 10  # gives you "xxxxxxxxxx"
Run Code Online (Sandbox Code Playgroud)

如果你想要一些更复杂的东西,比如n随机的小写字母,它仍然只有一行代码(不包括import语句和定义n):

from random import choice
from string import ascii_lowercase
n = 10

string_val = "".join(choice(ascii_lowercase) for i in range(n))
Run Code Online (Sandbox Code Playgroud)


Ale*_*lli 9

前十个小写字母是string.lowercase[:10](如果您之前导入了标准库模块string,当然;-).

"制作一个10个字符的字符串"的其他方法:( 'x'*10所有十个字符将是小写的xs ;-),, ''.join(chr(ord('a')+i) for i in xrange(10))(前十个小写字母)等等;-).

  • 在Python 3.1.1中,它实际上是string.ascii_lowercase. (4认同)
  • 是的,Python 3 删除了 `.lowercase`(`ascii_lowercase` 在最近的 Python 2 和 Python 3 中都有)。 (2认同)

Pet*_*ter 6

如果你只想要任何字母:

 'a'*10  # gives 'aaaaaaaaaa'
Run Code Online (Sandbox Code Playgroud)

如果您想要连续的字母(最多 26 个):

 ''.join(['%c' % x for x in range(97, 97+10)])  # gives 'abcdefghij'
Run Code Online (Sandbox Code Playgroud)


Joh*_*kin 5

为什么是“一行”?您可以将任何东西放在一条线上。

假设您希望它们以 'a' 开头,并且每次增加一个字符(换行 > 26),下面是一行:

>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
>>> mkstring(10)
'abcdefghij'
>>> mkstring(30)
'abcdefghijklmnopqrstuvwxyzabcd'
Run Code Online (Sandbox Code Playgroud)

  • Gregg:Python 允许使用分号作为语句分隔符,因此如果需要,您可以将整个程序放在一行上。 (6认同)
  • 你可以将任何东西放入一行,是吗?相当不错的说法,回复:Python :) (2认同)
  • 不过,您不能使用分号进行任意流量控制。例如嵌套循环。 (2认同)