python 列表推导式

列表h = [0, 5, 5, 5, 5, 5, 0]
经过操作
h = [h[i] for i in range(len(h)) if not i or h[i] != h[i - 1]]后
为什么变成了[0,5,0]

这个列表生成式筛选的是原列表中的0元素或当前位置值不等于前一个位置值的元素,那么就是头尾两个0和最开始的一个5



```python
h=[0,5,5,5,5,5,0]

#列表推导分解

for i in range(len(h)):
    if not i or h[i] != h[i-1]:#主要是判断这个条件not的优先级大于or,可以自己判断一下
        print(i)
        #print(h[i])

```

首先你要看你的列表推导式的最后的if语句,满足条件的是i为None和列表中当前元素不等于前一个元素。如果符合条件再将其放入更新后的h列表中,所以才有0 5 0这三个元素