找出与lis中下一个元素不同的元素的位置

2024-05-13 22:10:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要元素在列表中与下一个元素不同的位置

nums = np.array(["cat","cat","dog","dog","dog","goldfish","bee","bee","cat","cat"])

所以我在列表中使用zip和enumerate

print [c for a,b,c in zip(nums, nums[1:],enumerate(nums)) if a != b]
[(1, 'cat'), (4, 'dog'), (5, 'goldfish'), (7, 'bee')]

我只想要这个职位

>>[1,4,5,7]

如何删除这里的元组?或者有没有更好的(更快的)方法来获得列表中不同元素的位置?你知道吗


Tags: in元素列表forifnpziparray
2条回答

只需比较1个偏移的切片,就可以得到不匹配的索引-

np.flatnonzero(nums[1:] != nums[:-1])

如果您正在寻找numpy解决方案:

In [19]: a = ["cat","cat","dog","dog","dog","goldfish","bee","bee","cat","cat"]

In [20]: [x for x in range(len(a)-1) if a[x] != a[x+1]]
Out[20]: [1, 4, 5, 7]

相关问题 更多 >