使用if语句增加理解变量?

swo*_*1st 3 python list-comprehension list python-3.x

我正在努力学习Python理解,但我被困住了.我正在尝试count在条件为时增加变量True,并return在循环后计数.这是我的代码:

list = [1,2,4,5,7,8,10]
d = 3
count = 0
return [count for x in range(len(list))
        if list[x] + d in list and list[x] + 2 * d in list]
Run Code Online (Sandbox Code Playgroud)

"0"每次我的状况都会回来True.当我尝试添加count += 1理解时,它给了我一个SyntaxError.

Mad*_*ist 6

理解不起作用.从概念上讲,它们允许您设置和过滤列表中的各个元素,而不是累积到单个变量中.

虽然有一个标准的习惯用于解决这个问题.你基本上可以为你的条件制作一个可迭代的布尔值,或者只为你想要的所有元素保留一个布尔值,然后丢弃其他元素sum.

作为进一步的改进,我建议使用生成器表达式而不是列表理解.它看起来几乎相同,但支持懒惰的评估.这意味着您可以获得单行的所有好处,而无需将标志值列表存储在内存中.

以下是第一个选项的外观:

L = [1,2,4,5,7,8,10]
count = sum((x + d in L and x + 2 * d in L) for x in L)
Run Code Online (Sandbox Code Playgroud)

第二个选项看起来像这样:

L = [1,2,4,5,7,8,10]
count = sum(1 for x in L if (x + d in L and x + 2 * d in L))    
Run Code Online (Sandbox Code Playgroud)

请注意,我改名为您的变量listL所以它不会影的内置函数.