【问题标题】:Counting by letters in Python在 Python 中按字母计数
【发布时间】:2016-11-04 05:01:36
【问题描述】:

目标:按字母而非整数计数。

在 Python-2.7 中是否有一种按字母计数的简洁方法?我有一个程序,我按字母枚举一些数据,而我的解决方案对于阅读我的代码的人来说不是很清楚。

我一直在检查标准文档,但没有看到任何内置内容。

我在寻找什么:

for count in range('A', 'G'):
    print count

output[1]:
'C'
'D'
'E'
'F'

我会怎么做:

解决方案 A: 使用字典

letters = {
    1:'A'
    2:'B'
    3:'C'
    ...
}

for count in range(2, 6):
    print letters[count]

解决方案 B:使用 chr()ord()

for count in range(2, 6):
    print chr(ord('A') + count)

相关性:

我正在开发一个星期天纸密码解算器。我的算法的一部分涉及按字母代码对单词进行分类。例如,

print letter_code('banana')
output[2]: 'ABCBCB'

【问题讨论】:

  • string.ascii_lowercasestring.ascii_uppercase 应该可以工作。

标签: python python-2.7 count letter


【解决方案1】:
import string
alphabet = string.ascii_uppercase

>>> for char in alphabet[2:6]:
...     print char
...     
C
D
E
F
>>> 

【讨论】:

    【解决方案2】:

    您的解决方案 B 可以表示为:

    for charcode in range(ord('B'), ord('G')):
        print chr(charcode)
    

    但是要解决您更大的问题,如何:

    from string import ascii_lowercase, ascii_uppercase
    
    def letter_code(string):
        indexes = [ascii_lowercase.index(letter) for letter in string]
        return "".join(ascii_uppercase[indexes.index(number)] for number in indexes)
    
    print letter_code('banana')
    

    给你“ABCCBCB”

    【讨论】:

    • 不错!仍在尝试找出 "".join(... 行背后的机制,但非常简洁明了。
    【解决方案3】:

    这是一个可以做你想做的事情的函数:

    import string
    
    def enumerate(first, last):
        alphabet = string.ascii_uppercase
        start = alphabet.index(first)
        while alphabet[start] != last:
            print alphabet[start]
            start += 1
        print last
    

    【讨论】:

      【解决方案4】:

      对于我的特定应用程序,我喜欢的另一个解决方案是:

      alphabet = iter('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
      print next(alphabet)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-11
        • 2013-09-08
        • 1970-01-01
        • 2022-09-23
        • 1970-01-01
        • 2012-01-11
        相关资源
        最近更新 更多