str.isdigit() で文字列が数字かどうか判断できるので、数字の文字列だけ int() に変換したリストを再構成したいのであれば、次のようにするといいかと思います。
python
1lst = ['1', '2', 'あいう', '3', 'a']
2lst = [int(v) for v in lst if v.isdigit()]
3print(lst) # [1, 2, 3]
追記
ご指摘いただいた通り、符号を含む数値は isdigit() では False になってしまい、駄目でした。標準関数で数値かどうか判断できる関数がないのか探してみたのですが、なさそうですね。
can110 さんが提案されたやり方が正着と思われます。
str.isdecimal(): 全ての文字が十進数字なら真、そうでなければ偽
半角・全角のアラビア数字が真
str.isdigit(): 全ての文字が数字なら真、そうでなければ偽
半角・全角のアラビア数字、特殊数字が真
str.isnumeric(): 全ての文字が数を表す文字なら真、そうでなければ偽
半角・全角のアラビア数字、特殊数字、漢数字が真
引用元
python
1def is_int(v):
2 try:
3 num = int(v)
4 except ValueError:
5 return False
6 return True
7
8lst = ['1', '-2', 'あいう', '-3', 'a']
9lst = [int(v) for v in lst if is_int(v)]
10print(lst) # [1, 2, 3]
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/11/01 08:17
2018/11/01 08:25