2

入力を求め、ユーザーが次のように入力したとしましょう。

"RED REDD REDDD REDDDDD"

文字列を という名前のリストに変換しますredred[0] = 'RED', red[1] = 'REDD'など。

D文字のみを表示し、他のすべてを削除するにはどうすればよいですか? その場合red[0]Dred[1]となりますDD。これには方法がありますか?どうも

4

3 に答える 3

1

私の解決策は、上記よりも読みにくく単純に見えるかもしれませんが、そもそも何をしようとしているのかについて別の考え方をさせるかもしれないいくつかの代替アプローチを示しています。少なくとも、これらは正規表現やリスト内包表記を使用する場合とは異なり、大規模な入力で非常にうまく機能し、要求した場合にのみ必要なグループを生成する必要があります。

itertools.groupby

from itertools import groupby
# Groups of adjacent letters 'D' and not 'D'
g = groupby("RED REDD REDDD REDDDD", lambda c:c=='D')
# Literally what you asked for:
[''.join(i[1]) for i in g if i[0]]

コレクション.カウンター

from collections import Counter
words = "RED REDD REDDD REDDDD".split()
# for large input: (i[itertools.groupby("RED REDD REDDD REDDDD", lambda c:c!=' '))
counters = (Counter(w) for w in words)
# Literally what you asked for:
[c['D']*'D' for c in counters]
于 2013-09-07T05:11:10.620 に答える