Pythonでの数字と文字列の変換

1623 ワード

数値を文字列に変換
これは比較的簡単です.
Pythonのstr関数を使って直接変換できます
例えば123を'123'に変換
print(str(123))
または書式設定
print('%s' %123)
文字列を数値に変換
Pythonはstr関数に似たint関数を提供していないので、これは比較的複雑です.
変換が0-9の数であれば、辞書だけで実現できます.
def char2num(s):

    return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]


2桁以上の数であればmap/reduce関数を用いなければなりません
from functools import reduce
def str2int(s):
    def fn(x, y):
        return x * 10 + y
    def char2num(s):
        return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
    return reduce(fn, map(char2num, s))
print(str2int('23'))

mapを使用するとimportは使用できませんが、reduceを使用するにはfrom functools import reduceを追加する必要があります.
上記の関数はlambdaを導入することによって簡略化することができる.
def char2num(s):

    return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]

def str2int(s):

    return reduce(lambda x,y: x*10+y, map(char2num, s))

print(str2int('1234'))

キーワードlambdaは匿名関数を表し、コロンの前のx yは関数パラメータを表し、コロンの後には関数式を表す.匿名関数には、returnを書かずに式が1つしかないことに制限があります.戻り値は式の結果です.利点は、匿名関数に名前がないことであり、関数名の競合を心配する必要はありません.また、匿名関数も関数オブジェクトであり、匿名関数を変数に割り当て、変数を再利用して呼び出すこともできます.
たとえば
>>> f = lambda x,y:x*y

>>> f(2,5)

10