[英]Using OR in List Comprehension
對於我的一生,我不知道為什么這行不通。 我正在嘗試獲取列表的總和,但是,如果列表包含值13,則該值應從總和中排除,因此以下值也應從列表中排除。 例如, [1,13,3]
為1, [13,2,5]
為5。
我一直在嘗試此列表理解:
lst = [3,3,13]
sum([lst[i] for i in range(len(lst)) if not lst[i] == 13 or not lst[i-1] == 13])
手術室似乎不像我期望的那樣工作。 如果我刪除了OR語句的任何一部分,它將完全按照應有的方式工作。 例
>>> lst = [3,3,13]
>>> [lst[i] for i in range(0,3) if not lst[i] == 13]
[3, 3]
>>> [lst[i] for i in range(len(lst)) if not lst[i] == 13 or not lst[i-1] == 13]
[3, 3, 13]
您的代碼中有兩個錯誤。
lst[0-1] == 13
由於Python的索引環繞)。 and
,而不是or
。 這是因為戴摩根的法律 。 然后,生成的代碼是
sum([lst[i] for i in range(len(lst)) if not lst[i] == 13 and not(i > 0 and lst[i-1] == 13)])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.