5
8

More than 5 years have passed since last update.

Python 小技: enumerate() と zip() の組み合わせ、文字列が数値変換可能か調べる、文字列を数値としてソート

Last updated at Posted at 2017-03-14
% 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() のキーワード引数 keyint() を渡し、各要素 (文字列) を数値に変換してソートする。

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']

参考: 2. 組み込み関数 — Python 2.7.13 ドキュメント

5
8
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8