我在Python中工作并考虑以下问题:给定一个列表,例如[1, 0, -2, 0, 0, 4, 5, 0, 3]
,其中包含整数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