我试图创建一个列表(比如B
),它只在另一个列表的值有差异时才递增(比如A
),例如:
[1,1,2,2,4,4]
到{
[1,1,1,1,4,4,4,4]
到{
下面的代码可以做到这一点:
boxes=[1,1,1,1,4,4,4,4]
positions=[0]
position=0
for psn,box in list(enumerate(boxes))[:-1]:
if boxes[psn+1]-box ==0:
increment=0
else:
increment=1
position=position+increment
positions.append(position)
print(positions)
有人能给出使用列表理解(最好使用lambda
函数)来实现它的建议吗?在
我看到了新的解决方案,所以我们开始吧。在
digitize
^{pr2}$factorize
groupby
和{unique
将列表理解与
itertools.accumulate
结合使用:以下是使用
nummpy
的方法:或者另一个例子:
^{pr2}$详细信息
使用^{} 获取数组的第一个差分
并使用^{} 限制}之间的值:
0
和{最后,取^{} 并在开头添加一个
0
,因为这一差异将给您一个长度为n-1
的数组:使用itertools.groupby:
输出
^{pr2}$相关问题 更多 >
编程相关推荐