當兩個元素以 if 陳述句中表達的特定順序“一起”時,我試圖從串列中洗掉某些元素。但是,如果滿足條件,它們都會做同樣的事情,所以我想知道是否有一種方法可以不在每個陳述句中撰寫相同的代碼來執行,并且僅在滿足 if 陳述句時才執行。
arr = ["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]
if arr[i] == "SOUTH" and arr[j] == "NORTH":
del arr[i]
del arr[j]
length-=2
if arr[i] == "NORTH" and arr[j] == "SOUTH":
del arr[i]
del arr[j]
length-=2
if arr[i] == "WEST" and arr[j] == "EAST":
del arr[i]
del arr[j]
if arr[i] == "EAST" and arr[j] == "WEST":
del arr[i]
del arr[j]
length-=2
uj5u.com熱心網友回復:
如果我的猜測是正確的,并且您正在嘗試減少一組動作,那么可以這樣做:
a = ["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]
opposite = {"NORTH":"SOUTH","SOUTH":"NORTH","WEST":"EAST","EAST":"WEST"}
b = []
for word in a:
if b and b[-1] == opposite[word]:
b.pop()
else:
b.append(word)
print(b)
輸出:
['WEST']
uj5u.com熱心網友回復:
您可以將這兩個值組合成一個元組,然后在一組元組中搜索它。
opposites = {("NORTH", "SOUTH"), ("SOUTH", "NORTH"), ("EAST", "WEST"), ("WEST", "EAST")}
pair = (a[i], a[j])
if pair in opposites:
del arr[i]
del arr[j]
length-=2
uj5u.com熱心網友回復:
您可以將您的 if 陳述句組合成一個帶有or.
a = ["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]
if (arr[i] == "SOUTH" and arr[j] == "NORTH") or (arr[i] == "NORTH" and arr[j] == "SOUTH") or \
(arr[i] == "WEST" and arr[j] == "EAST") or (arr[i] == "EAST" and arr[j] == "WEST"):
del arr[i]
del arr[j]
length-=2
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/506736.html
上一篇:我正在撰寫一個c mandelbrot生成器,但我需要使用HSV
下一篇:如何不重復地撰寫這段代碼?
