我在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