前提・実現したいこと
xList = ['hoge','fuga','hogehoge','123456789','fugafuga']
上記のリストから、'123456789'のように数字だけでできた文字列を探し
その文字列が配列の何番目にあるか特定したいです。
良いやり方を教えてください
個人的にはfor文で回そうかと考えています。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
xList.index('123456789')
スミマセン仕様を読み違えてました
書き直します
解決したようですが、とりあえず
Python
1import re 2xList = ['hoge','fuga','hogehoge','123456789','fugafuga'] 3s = [i for i, d in enumerate(xList) if re.match(r"^\d+$", d)] 4#[3]
投稿2018/09/06 07:02
編集2018/09/06 07:16総合スコア15898
0
ベストアンサー
こんな感じでしょうか。str.isdigit を利用します。
Python
1def search_nums(lst): 2 return [ 3 i for i, elem in enumerate(lst) 4 if elem.isdigit() 5 ] 6 7xList = ['hoge', 'fuga', 'hogehoge', '123456789', 'fugafuga'] 8print(search_nums(xList))
実行結果 Wandbox
[3]
関数search_numsは次のように書いても良いです。
Python
1def search_nums(lst): 2 ret = [] 3 for i, elem in enumerate(lst): 4 if elem.isdigit(): 5 ret.append(i) 6 7 return ret
投稿2018/09/06 07:01
編集2018/09/06 07:04総合スコア35660
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
['hoge','fuga','hogehoge','123456789','fugafuga']
から
[False, False, False, True, False]
と判定結果をつくってから、 index だけをとりだすようにしてみました。
num.py
python3
1results = [x.isnumeric() for x in a] 2print(results) 3ids = [i for i, e in enumerate(results) if e] 4print(ids) 5 6m = map(lambda i_el: i_el[0] if i_el[1].isnumeric() else None, enumerate(a)) 7ids = [x for x in m if x] 8print(ids) 9
2つの方法を書いています。
最初の方法は [False, False, False, True, False] をつくって処理しています。
次の方法は、 map をつかって[None, None, None, 3, None] となるような itelater をつくって処理しています。
投稿2018/09/07 03:49
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/06 08:10