、私はこのような構文を使用しますどのような文字列を生成するのはどうですか?私はこれよりもよりよい解決策を考え出すことができなかった</p> <pre><code>a..z </code></pre> <p>::他の言語で
[chr(x) for x in range(ord("a"), ord("z") + 1)]
の短い、より読みやすい方法はありますそのようなリストを作成する?
、私はこのような構文を使用しますどのような文字列を生成するのはどうですか?私はこれよりもよりよい解決策を考え出すことができなかった</p> <pre><code>a..z </code></pre> <p>::他の言語で
[chr(x) for x in range(ord("a"), ord("z") + 1)]
の短い、より読みやすい方法はありますそのようなリストを作成する?
ないあなたは、zよりも、他の何かをしたいが、あなたはこれを行うことができれば、必ずしも素晴らしい:
from string import ascii_lowercase
for c in ascii_lowercase:
print c
他の範囲'a..z'は' ascii_lowercase'のスライスを簡単に取ることができるからです。 –
@ larsmans簡単に...どのように?あなたの頭の中の終端文字を手動でオフセットに変換する以外に、 –
あなたはmap(chr,range(ord('a'),ord('z')+1))
コールでリストの内包を置き換えることができますが、それはおそらくない何」本当に頼んでいる。ただし、表示する例はより適切にインポートされます。 string.lowercase
の文字列として使用できます。
文字が序列と一致していると仮定すると、ßやæなどの文字を考慮すると間違っている可能性があります(Åäöはスウェーデン語のアルファベットで最後ですが、äとöはaとドイツ語で)。そのため、unicode.islower()やlocale.strcoll()などの関数があります。
私のやり方はあなたと似ていますが、map
を使用して、リスト内包表記と間違って何もないこの
>>> def generate_list(char1,char2):
... myl = map(chr, range(ord(char1),ord(char2)+1))
... print myl
...
>>> generate_list("a","d")
['a', 'b', 'c', 'd']
のような任意の関数を作成することができますが、多分あなたは試してみたい:
from string import lowercase
print lowercase
abcdefghijklmnopqrstuvwxyz
print list(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']
julio.alegriaとNathan Binkertによって指摘された通りlowercase
はすべて小文字の文字列で、Python文字列はiterablesです。
あなたは、アルファベットのサブセットが必要な場合は、これを行うにはいいとPython的な方法があります。
print lowercase.find('f')
5
print lowercase[5,9]
fghij
print filter(lambda c: ord('f') <= ord(c) <= ord('j'), lowercase)
fghij
他の場所で述べたように、「」「Z」までの文字はstring.lowercaseに既にあります。したがって、あなたはその断片を取ることができます。
import string
def create_letter_list(start_char, end_char):
return string.lowercase[ord(start_char) - ord('a'): ord(end_char) - ord('a') + 1]
letter_list = create_letter_list('g', 'n')
print letter_list
出力:まだ別のオプション
ghijklmn
:それに答えるから人々を説得する努力において
from string import ascii_lowercase
def charRange(start, end):
offset = ord('a')
return ascii_lowercase[ord(start)-offset:ord(end)-offset+1]
charRange('a', 'f')
> 'abcdef'
import random
def random_chars(size=10, chrs=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chrs) for x in range(size))
ランダムな文字の選択が望ましい結果であると思われる理由が分かりません。 – hughdbrown
、私は行きますよ言及するには['string.lowercase'](http://docs.python.o rg/library/string.html#string.lowercase)をコメントに追加しますが、アルファベット全体(** Edit **:... sigh)が必要な場合にのみ有効です –
はい、_string.lowercase_も使用できます解読可能な解法ですが、アルファベット全体が必要な場合にのみ機能します。 _range( "a"、 "c")_ – Jeremy
のようなことができたらいいなと思っています。しかし、今のように 'a'から' y'に行くと 'ord( 'z')+ 1'は問題を解決するはずです – juliomalegria