% python --version
Python 2.7.11 :: Anaconda 2.5.0 (64-bit)
enumerate()
と zip()
を組み合わせる
for i, (a, b) in enumerate(zip(list_a, list_b)):
# Do something
文字列が数値に変換可能か調べる ※ただし正の整数に限る
文字列メソッドの isdigit()
を使う。文字列中に数字しかない場合には真が、その他の場合は偽が返る。
a = '100'
b = 'hoge100'
a.isdigit() # => True
b.isdigit() # => False
他にも is*()
で色々と調べることができる。
参考:
文字列を数値としてソート
やりたいこと:
a = ['2', '1', '3', '33', '22', '11']
sorted(a) # => ['1', '11', '2', '22', '3', '33']
# I need `['1', '2', '3', '11', '22', '33']
sorted()
のキーワード引数 key
に int()
を渡し、各要素 (文字列) を数値に変換してソートする。
sorted(a, key=int) # => ['1', '2', '3', '11', '22', '33']
ソート対象のリストに数値変換できない文字列が含まれているとエラーになるので、その場合は以下のようにする。
a = ['2', '1', '3', '33', '22', '11', 'hoge', 'fuga']
sorted(a, key=lambda x: int(x) if x.isdigit() else x) # => ['1', '2', '3', '11', '22', '33', 'fuga', 'hoge']