我想摺疊或展開列表的子序列摺疊或展開Python中列表的子序列的優雅方式?
例如, ['A', 'B', 'D', 'E', 'H'] -> ['AB', 'DE', 'H']
反之亦然
編輯:上面的例子可能會導致誤解。以下更好:
例如['foo', 'bar', 'wtf'] <-> ['baz', 'wtf']
目前我寫了一些醜陋的代碼,如:
while True:
for i, x in enumerate(s):
if x == 'foo' and s[i+1] == 'bar':
s[i:i+2] = 'baz'
break
else:
break
誰的人問:「爲什麼那件事」:
其實我工作的一個優化的編譯器,這是窺視孔部分。 書寫模式匹配有點煩人。
P.S.我發現下面的代碼工程,但有點可笑,爲什麼枚舉知道我們的修改?
s = ['foo', 'bar', 'wtf', 'foo', 'bar', 'wtf', 'foo', 'bar', 'wtf']
def collapse():
for i, x in enumerate(s):
if s[i] == 'foo' and s[i+1] == 'bar':
s[i:i+2] = ['baz']
def expand():
for i, x in enumerate(s):
if s[i] == 'baz':
s[i:i+1] = ['foo', 'bar']
collapse()
print s
expand()
print s
「foo''和'bar''怎麼變成」baz''? – SilentGhost 2010-04-20 13:41:06
找到foo,然後轉到baz – inv 2010-04-20 15:02:36