我正在做 Codewars 并被這個簡單的問題困住了。問題是:
你在這個 kata 中的目標是實作一個差異函式,它從另一個串列中減去一個串列并回傳結果。它應該從串列 a 中洗掉所有值,這些值出現在串列 b 中并保持它們的順序。如果 b 中存在一個值,則必須從另一個中洗掉它的所有出現。
這是我嘗試過的:
def array_diff(a, b):
if a == []: return b
if b == []: return a
for occurrence in b:
if occurrence in a:
a.remove(occurrence)
return a
出于某種原因,我有 2 個失敗的測驗,這些失敗的測驗的要求是:
a was [1,2,2], b was [2], expected [1]: [1, 2] should equal [1]
a was [], b was [1,2], expected []: [1, 2] should equal []
任何人都可以幫助我并在可能的情況下進行解釋嗎?任何幫助表示贊賞。編輯:我的借口是我是 Python 的初學者,所以如果這個問題有非常明顯的錯誤/錯誤,抱歉
uj5u.com熱心網友回復:
您可以嘗試修改您的代碼,如下所示:
def array_diff(a, b):
if a == []: return a
if b == []: return a
for occurrence in b:
if occurrence in a:
a = list(filter(lambda val: val != occurrence, a)
return a
uj5u.com熱心網友回復:
我修好了它。如果有人遇到相同的問題,這里是代碼:第一個代碼是由 Matthias 提供的,它更簡潔,請使用它。
def array_diff(a, b):
return [value for value in a if value not in b]
# CREDITS TO MATTHIAS FOR THIS SIMPLE SOLUTION
我的代碼,如果有人感興趣:
def array_diff(a, b):
#if a == []: return b
#if b == []: return a
# these if statements are replaced by the"for item in range" code below
for occurrence in b:
if occurrence in a:
for item in range(a.count(occurrence)):
a.remove(occurrence)
return a
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/367665.html
下一篇:如何合并兩個物件陣列
