正規表現に対してフィルタリングし、一致するものからバージョン番号を抽出する必要があるライブラリファイル名のリストがあります。これはそれを行うための明白な方法です:
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」ループをスマートなワンライナーに置き換えることができるはずだと感じています。提案?