#python
#питон
Вопрос:
У меня есть список python:
l1=[7,1,3,4,1,7,6]
Как я могу найти количество товаров между одним и тем же товаром?
Например ,количество элементов между 7 равно 4,а количество элементов между 1 равно 2
Комментарии:
1. Вам это нужно для одного номера или для каждого номера в списке?
2. для каждого числа
3. что делать, если число появляется 3 раза?
Ответ №1:
l1=[7,1,3,4,1,7,6,3] chosen_number = 3 number_indexes = [i for i, j in enumerate(l1) if j == chosen_number] items_in_between = max(number_indexes) - min(number_indexes) - 1 print(items_in_between)
Ответ №2:
вы можете использовать индекс, чтобы получить положение элемента.
def count_(array_int,element): position1 = array_int.index(element) 1 return array_int.index(element,position1) - position1
Комментарии:
1.
index
принимает начальный аргумент, который был бы лучше, чем нарезка.2. спасибо, я этого не знал, я обновил свой ответ.
Ответ №3:
ниже приведен код, который просит пользователя ввести номер и указать, есть ли в списке несколько выбранных номеров. Я также дал команды ( # ), которым вы должны следовать, чтобы понять мой код.
l1=[7,1,3,4,1,7,6,3] number_chosen = int(input('Input the number that you want to check -gt; ')) def gap_between_duplicate(num): ### Find the index of the number index = [i for i, j in enumerate(l1) if j == num] ### Calculate the gap between the numbers gap = max(index) - min(index) -1 ### If else function to provide the output if gap == -1: return f'There is only 1 of the selected number in the list' return f'There are {gap} amount of number between the numbers {num}.' print(gap_between_duplicate(number_chosen))
Ответ №4:
Вот мое O(n)
предварительное вычисление и O(1)
получение результата для конкретного числового решения. Требуется дополнительная O(n)
память.
Это решение будет подсчитывать элементы с первого появления до последнего (если их более 2). Если есть только одно вхождение числа, -1
будет возвращено.
l1=[7,1,3,4,1,7,6] res = {} for i in range(len(l1)): e = l1[i] if e in res: start, end = res[e] res[e] = (start, i) else: res[e] = (i, i) print(res[7][1] - res[7][0] - 1) # 4