web-dev-qa-db-ja.com

アルファベット範囲のpython

このようなアルファベットのリストを作る代わりに:

alpha = ['a', 'b', 'c', 'd'.........'z']

範囲や何かにグループ化できる方法はありますか?たとえば、数値の場合、range()を使用してグループ化できます。

range(1, 10)
315
Alexa Elis
>>> import string
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'

あなたが本当にリストが必要な場合:

>>> list(string.ascii_lowercase)
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

そしてrangeでそれをするために

>>> list(map(chr, range(97, 123))) #or list(map(chr, range(ord('a'), ord('z')+1)))
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

その他の有用なstringモジュールの特徴:

>>> help(string) # on Python 3
....
DATA
    ascii_letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'
    ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    digits = '0123456789'
    hexdigits = '0123456789abcdefABCDEF'
    octdigits = '01234567'
    printable = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>[email protected][\\]^_`{|}~ \t\n\r\x0b\x0c'
    punctuation = '!"#$%&\'()*+,-./:;<=>[email protected][\\]^_`{|}~'
    whitespace = ' \t\n\r\x0b\x0c'
576
jamylak
[chr(i) for i in range(ord('a'),ord('z')+1)]
79
Bg1850

Python 2.7と3では、これを使うことができます。

import string
string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'

string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

@Zazが言うように:string.lowercaseは廃止予定でPython 3では動作しませんが、string.ascii_lowercaseは両方で動作します

16
Trinh Nguyen

これは単純な文字範囲の実装です。

コード

def letter_range(start, stop="{", step=1):
    """Yield a range of lowercase letters.""" 
    for ord_ in range(ord(start.lower()), ord(stop.lower()), step):
        yield chr(ord_)

デモ

list(letter_range("a", "f"))
# ['a', 'b', 'c', 'd', 'e']

list(letter_range("a", "f", step=2))
# ['a', 'c', 'e']
7
pylang

Rのletters[1:10]と同等のものを探している場合は、次を使用できます。

 import string
 list(string.ascii_lowercase[0:10])
0
Qaswed