リストから空要素を除去する

例えばsplitなどで以下のようなリストができることがあります。

import re
str1 = "a:b:c:d::"
r = re.split(r':',str1)
print(r)
$ py main.py
['a', 'b', 'c', 'd', '', '']

このとき空文字の要素だけ除去された状態のリストを得たい場合、リスト内包表記を使うと便利です。

import re
str1 = "a:b:c:d::"
r = [i for i in re.split(r':',str1) if i != '']
print(r)
$ py main.py
['a', 'b', 'c', 'd']

ちなみに当初remove('')でやろうとしたのですが、空文字がひとつしか削除されない上に、空文字が無い場合は例外まで出るので使えたものじゃありませんでした。