【问题标题】:Python can make alphabet list like Haskell? [duplicate]Python可以像Haskell一样制作字母表吗? [复制]
【发布时间】:2025-12-10 23:20:03
【问题描述】:

Haskell 可以这样:

['a'..'z']

在 Python 中:

map(chr, range(97, 123))

我觉得 Python 有点冗长。 有没有像 Haskell 一样的 Python 简单方法?

【问题讨论】:

  • 这种结构在 Perl 中很常见,而且很容易上瘾。我希望 Python 有它...
  • 冗长不一定是坏事。虽然我不会称之为冗长。 [chr(i) for i in range(97, 123)]
  • 我也相信 ruby​​ 也有这个。
  • 在 Perl 中,它是 range operators。很容易上瘾。

标签: python


【解决方案1】:

是的。 from string import ascii_lowercase.

【讨论】:

    【解决方案2】:
    from string import ascii_lowercase
    L = list(ascii_lowercase)
    

    【讨论】:

    • 它适用于 Python 2 和 3。
    • @J.F.Sebastian:哦,哎呀,有趣的是,我在我的计算机上测试它做了一些稍微不同的代码,这就是为什么它在 Python 3 xD 上对我不起作用
    【解决方案3】:

    无需导入任何内容的可读性稍强的版本

    alphabet = [chr(i) for i in range(ord('a'), ord('z') + 1)]
    

    【讨论】:

      【解决方案4】:

      没有通用的方法,因为haskell中的语法[a..b]使用了特殊的typeclassEnum,但是python中没有特殊的魔法方法或特殊的枚举语法。

      【讨论】:

      • 另外,虽然我可以想到 some 使用这种语法,但大多数潜在用例完全被 python 中的range(start, stop, step) 覆盖。
      【解决方案5】:

      既然您希望它作为一个列表,那么您可以执行以下操作:

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

      【讨论】:

      • 或者只是list(ascii_lowercase)