首頁 >後端開發 >Python教學 >如何根據條件有效率地對清單進行分區?

如何根據條件有效率地對清單進行分區?

Barbara Streisand
Barbara Streisand原創
2024-12-13 16:23:20345瀏覽

How Can I Efficiently Partition a List Based on a Condition?

根據條件對列表進行分區

根據給定條件將列表分成兩部分時,很容易迭代列表兩次,創建兩個新列表,如下所示:

good = [x for x in mylist if x in goodvals]
bad = [x for x in mylist if x not in goodvals]

但是,這種方法需要兩個單獨的列表對列表進行迭代,這可能效率低下。為了提高效能,請考慮使用帶有條件附加的手動迭代:

good, bad = [], []
for x in mylist:
    (bad, good)[x in goodvals].append(x)

在此程式碼中:

  • 我們初始化兩個空列表,好和壞,來儲存分區元素.
  • 我們迭代mylist 的元素。
  • 對於每個元素 x,我們使用表達式(bad, good)[x in goodvals] 根據 goodvals 中的條件 x 選擇適當的清單。
  • 如果 x 不符合條件,則該表達式計算為 bad,否則計算為 good。
  • 我們使用append方法將x附加到選定的清單中。

這種方法避免了兩次單獨迭代的需要,透過減少列表的數量來提高性能從二到一的遍歷。它也被認為更優雅,因為它以簡潔易讀的方式捕捉分割區邏輯。

以上是如何根據條件有效率地對清單進行分區?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn