prr*_*rao 5 python list repeat
我有一个重复值的列表,如下所示:
x = [1, 1, 1, 2, 2, 2, 1, 1, 1]
Run Code Online (Sandbox Code Playgroud)
此列表是从匹配正则表达式的模式生成的(此处未显示).该列表保证具有重复值(许多,许多重复 - 数百,如果不是数千),并且从不随机排列,因为这是正则表达式每次匹配的内容.
我想要的是跟踪条目从前一个值更改的列表索引.因此,对于上面的列表中x,我想获得一个变化跟踪列表[3, 6]说明x[3],并x[6]从列表中他们以前的条目不同.
我设法做到了这一点,但我想知道是否有更清洁的方式.这是我的代码:
x = [1, 1, 1, 2, 2, 2, 1, 1, 1]
flag = []
for index, item in enumerate(x):
if index != 0:
if x[index] != x[index-1]:
flag.append(index)
print flag
Run Code Online (Sandbox Code Playgroud)
输出:[3, 6]
问题:在更少的代码行中,是否有更简洁的方法来做我想要的事情?
它可以使用列表推导和range函数来完成
>>> x = [1, 1, 1, 2, 2, 2, 3, 3, 3]
>>> [i for i in range(1,len(x)) if x[i]!=x[i-1] ]
[3, 6]
>>> x = [1, 1, 1, 2, 2, 2, 1, 1, 1]
>>> [i for i in range(1,len(x)) if x[i]!=x[i-1] ]
[3, 6]
Run Code Online (Sandbox Code Playgroud)