111

私はJavaとCから来たPythonを初めて使用します。文字をインクリメントするにはどうすればよいですか?JavaまたはCでは、charとintは実質的に交換可能であり、特定のループでは、charをインクリメントし、charで配列にインデックスを付けることができると非常に便利です。

Pythonでこれを行うにはどうすればよいですか?従来のfor(;;)ルーパーがないのは十分に悪いことです-戦略全体を再考することなく、達成したいことを達成できる方法はありますか?

4

7 に答える 7

189

Python 2.xでは、ordandchr関数を使用するだけです。

>>> ord('c')
99
>>> ord('c') + 1
100
>>> chr(ord('c') + 1)
'd'
>>> 

Python 3.xは、バイトとユニコードを明確に区別しているため、これをより整理された興味深いものにします。デフォルトでは、「文字列」はユニコードであるため、上記は機能します(ordUnicode文字を受け取りchr、それらを生成します)。

ただし、バイト(バイナリデータストリームの処理など)に関心がある場合は、さらに簡単です。

>>> bstr = bytes('abc', 'utf-8')
>>> bstr
b'abc'
>>> bstr[0]
97
>>> bytes([97, 98, 99])
b'abc'
>>> bytes([bstr[0] + 1, 98, 99])
b'bbc'
于 2010-01-28T18:28:50.710 に答える
16

「従来の for(;;) ルーパーがないのは十分に悪い」?? 何?

しようとしていますか

import string
for c in string.lowercase:
    ...do something with c...

または、またはを使用している可能性がありますstring.uppercasestring.letters

for(;;)多くの場合、より良い方法があるため、Pythonにはありません。また、必要がないため、文字計算もありません。

于 2010-01-28T18:38:50.560 に答える