我正在使用Python编程,考虑以下问题:给定一个列表,例如
如果给定
朴素地说,我会写出如下的代码:
[1, 0, -2, 0, 0, 4, 5, 0, 3]
,其中包含多个整数0。我想要获得这些0的索引,并且对于每一个0,它在列表中出现的次数,直到出现不同的元素或列表结束。如果给定
l = [1, 0, -2, 0, 0, 4, 5, 0]
,则函数将返回((1, 1), (3, 2), (7, 1))
。返回结果是一个元组的列表。元组的第一个元素是给定元素的索引(在列表中),第二个元素是该元素重复出现的次数,直到出现不同的元素或列表结束。朴素地说,我会写出如下的代码:
def myfun(l, x):
if x not in l:
print("The given element is not in list.")
else:
j = 0
n = len(l)
r = list()
while j <= (n-2):
count = 0
if l[j] == x:
while l[j + count] == x and j <= (n-1):
count +=1
r.append((j, count))
j += count
else:
j += 1
if l[-1] == x:
r.append((n-1, 1))
return r
但是我想知道是否有更好(更短?)的方法来完成同样的事情。
itertools
在一行代码中完成。我会研究一下这个库。谢谢! - Odile