/ / Pythonリスト内包表記リストから要素と次の要素を削除する - python、正規表現、コーディングスタイル、リスト内包表記

Pythonリストの理解リストから要素と次の要素を削除する - python、regex、coding-style、list-comprehension

リスト内包表記を使用して、文字のリストから "x08"(バックスペース文字)のすべての出現点を削除したいと思いました。 "x08"の前の文字も削除しました。

再帰的な関数呼び出しになったのですが、 読める/ pythonicワンライナー。

入力例:

["a", "t", "+", "B", "A", "D", "x08", "x08", "x08","c", "o", "p", "s", "=", "?"]

望ましい出力:

["a", "t", "+", "c", "o", "p", "s", "=", "?"]

人々が私の現在の解決策を見たいのであれば。

def line_parser(self,line):
if "x08" in line:
del line[line.index("x08") -1]
del line[line.index("x08")]
self.line_parser(line)
else:
self.something_else(line)

回答:

回答№1の場合は7

これがPythonicソリューションです。

>>> data = ["a", "t", "+", "B", "A", "D", "x08", "x08", "x08","c", "o", "p", "s", "=", "?"]
>>> newdata = []
>>> for c in data:
...     if c == "x08" and newdata:
...         newdata.pop()
...     else:
...         newdata.append(c)
...
"D"
"A"
"B"
>>> newdata
["a", "t", "+", "c", "o", "p", "s", "=", "?"]
>>>

読みやすく、明示的で、Pythonのパフォーマンス特性を利用しています。 lists。 Pythonicは "one-liner"と同義ではありません。実際、多くの場合、one-linerソリューションはPythonicの反対です。