Python可以像Haskell一样生成字母表吗?

9

Haskell可以做到这些:

['a'..'z']

在Python中:

map(chr, range(97, 123))

我觉得Python有些啰嗦。 Python是否有像Haskell一样简单的方式?


这种结构在Perl中很常见,而且让人上瘾。我希望Python也有它... - the wolf
冗长并不一定是坏事。虽然我不会称之为冗长。更清晰的写法应该是 [chr(i) for i in range(97, 123)] - Joel Cornett
我相信 Ruby 也有这个功能。 - Joel Cornett
在Perl中,它是范围运算符。非常让人上瘾。 - the wolf
5个回答

13

可以。 from string import ascii_lowercase


6
from string import ascii_lowercase
L = list(ascii_lowercase)

它可以在Python 2和3中运行。 - jfs
@J.F.Sebastian:哦,糟了,有趣的是我在我的电脑上测试它时使用了一些略微不同的代码,这就是为什么它在 Python 3 上对我没有起作用的原因 xD。 - Dair

6
没有导入任何内容的稍微更易读的版本
alphabet = [chr(i) for i in range(ord('a'), ord('z') + 1)]

1

没有通用的方法,因为Haskell中的语法[a..b]使用了特殊的类型类Enum,但是在Python中没有枚举的特殊魔法方法或特殊语法。


此外,虽然我可以想到一些使用这种语法的情况,但大多数潜在的用例都已经被Python中的range(start, stop, step)完全覆盖。 - Joel Cornett

0

既然你想要它作为一个列表,那么你可以按照以下步骤进行:

from string import ascii_lowercase
l = [i for i in ascii_lowercase]

8
或者只需使用 list(ascii_lowercase) - BrenBarn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接