簡體   English   中英

這段代碼可以更簡單嗎? 哪個代碼看起來更好? [反向循環]

[英]Can this code be more simple? Which code looks better? [Reversed Loop]

您能否使代碼1)比現在更簡單?

還是有更好的方法?

我編寫了這兩個非常簡單的代碼,只是為了可視化差異。

在我看來,代碼1)比2)更清晰,尤其是在循環實現更多內容時,例如字典列表。

1)用於拉鏈

shopping_list =['bananas', 'car', 'rum', 'cat', 'meat', 'jelly']
for i, item in zip(range(len(shopping_list)-2, -1, -1), shopping_list):
    print(i, item)
    if item == 'cat':
        shopping_list.pop(i)

print()

2)僅用於

shopping_list =['bananas', 'car', 'rum', 'cat', 'meat', 'jelly']
for i in range(len(shopping_list)-1, -1, -1):
    print(i, shopping_list[i])
    if shopping_list[i] == 'cat':
        shopping_list.pop(i)

循環的結果是:

['bananas', 'rum', 'meat', 'jelly']

您無需修改​​原始列表即可刪除不滿足條件的單詞,您似乎在前兩種方法中都這樣做。

相反,您可以使用過濾器根據條件word != 'cat'刪除元素

shopping_list =['bananas', 'car', 'rum', 'cat', 'meat', 'jelly']
print(list(filter(lambda x: x != 'cat', shopping_list)))

輸出將是

['bananas', 'car', 'rum', 'meat', 'jelly']

您的解決方案不好,因為不必要的復雜性,並且因為您在循環訪問列表時修改了列表(這很棘手)。

使用任一列表推導 (如注釋中所述):

shopping_list = [w for w in shopping_list if w != 'cat']

filter方法:

shopping_list  = list(filter(lambda x: x != 'cat', shopping_list))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM