Tôi đang làm việc bằng Python và xem xét vấn đề sau: với một danh sách, chẳng hạn như [1, 0, -2, 0, 0, 4, 5, 0, 3]
chứa số nguyên 0 nhiều lần, tôi muốn có chỉ số tại số 0 và cho mỗi , số lần nó xuất hiện trong danh sách cho đến khi một phần tử khác xuất hiện hoặc danh sách kết thúc.Tìm các mục và lặp lại trong danh sách
Cho l = [1, 0, -2, 0, 0, 4, 5, 0]
, hàm sẽ trả lại ((1, 1), (3, 2), (7, 1))
. Kết quả là một danh sách các bộ dữ liệu. Phần tử đầu tiên của tuple là chỉ mục (trong danh sách) của phần tử đã cho và phần tử thứ hai là số lần nó được lặp lại cho đến khi một phần tử khác xuất hiện hoặc danh sách kết thúc.
ngây thơ, tôi sẽ viết một cái gì đó như thế này:
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
Nhưng tôi đã tự hỏi liệu sẽ có một đẹp hơn (ngắn hơn?) Cách để làm điều tương tự.
Thật vậy, nó có thể được thực hiện trong một dòng với 'itertools'.Tôi sẽ nhìn vào thư viện này. Cảm ơn bạn ! – Odile