私は、正規表現に対してフィルタリングし、一致するものからバージョン番号を抽出するために必要なライブラリファイル名のリストを持っています。これはそれを行うための明白な方法である:以下のリストを生成Pythonリストのフィルタリングと変換
libs = ['libIce.so.33', 'libIce.so.3.3.1', 'libIce.so.32', 'libIce.so.3.2.0']
versions = []
regex = re.compile('libIce.so\.([0-9]+\.[0-9]+\.[0-9]+)')
for l in libs:
m = regex.match(l)
if m:
versions.append(m.group(1))
:
['3.3.1', '3.2.0']
しかし、私は "ループは非常に「Pythonのスタイル」ではありません、交換することが可能であるべきと感じていることを感じますfor 'ループの上にいくつかのスマートな1つのライナー。 提案?
'findall'と 'sum'の両方に感謝します! 読みやすさに関して - すでにすべてのstlとboostアルゴリズムでそれに使用されていました:) –
何らかの理由で、これは受け入れられた/上書きされた答えよりもはるかに理にかなっています。 –