我正在做一些Google Python Class練習,我試圖找到pythonic解決方案以下問題。使用列表解析使funcion更pythonic
D.鑑於號碼的列表,其中,返回所有相鄰== 元件已被減少爲單個元件的列表,所以[1,2,2,3] 返回[1,2,3 ]。您可以創建一個新列表或修改傳入的 列表。
我的嘗試,這是工作完美如下:
def remove_adjacent(nums):
result = []
for num in nums:
if len(result) == 0 or num != result[-1]:
result.append(num)
return result
例如,remove_adjacent([2, 2, 3, 3, 3])
輸出[2, 3]
。一切都好。
我試圖使用列表理解爲了更Python的方式archieve這一點,所以我嘗試如下:
def remove_adjacent(nums):
result = []
result = [num for num in nums if (len(result)==0 or num!=result[-1])]
return result
這與相同的輸入[2, 2, 3, 3, 3]
,輸出[2, 2, 3, 3, 3]
(相同)。 Meeeh!錯誤。
我在做什麼錯了列表解析?我是否試圖做一些與列表解析無關的事情?我知道初始化列表(result = []
)有點奇怪,所以在這種情況下使用列表解析可能無法做到這一點。
就像一個fyi列表(set([2,2,3,3,3]))'將返回'[2,3]'。但是,這隻會將列表減少爲唯一的一組值。它不一定刪除相鄰的重複項。 – KronoS
你從哪裏得到'res' varoraiable – The6thSense
也'res'應該'result' – KronoS