Нужно написать код, который считет количество не повторяющихся элементов в списке
Без использования: методов, функций, словарей, множеств, in и not in.
Хочу понять как это можно сделать
Python
Подсчет количества не повторяющихся элементов
Когда-то делал это как раз "без использования: методов, функций, словарей, множеств, in и not in."
Но на Javascript
var a = [5,8,4,3,9,5,1,6,3,5,2,8,7,4,5,3,0,5,6,6];
console.log(a);
var b = [];
for (var i = 0; i < a.length; i++) {
for (var j = 0; j < a.length; j++) {
if (i == j) {
continue;
}
if (a[i]==a[j]) {
b.push(a[i]);
var n = a[i];
}
for (var k = 0; k < a.length; k++) {
if (a[k] == n) {
a.splice(k, 1);
}
};
};
};
console.log('не повторяются ' + a);
console.log('повторяются ' + b);
____
5,8,4,3,9,5,1,6,3,5,2,8,7,4,5,3,0,5,6,6
не повторяются 9,1,2,7,0
повторяются 5,8,3,6,4
Но на Javascript
var a = [5,8,4,3,9,5,1,6,3,5,2,8,7,4,5,3,0,5,6,6];
console.log(a);
var b = [];
for (var i = 0; i < a.length; i++) {
for (var j = 0; j < a.length; j++) {
if (i == j) {
continue;
}
if (a[i]==a[j]) {
b.push(a[i]);
var n = a[i];
}
for (var k = 0; k < a.length; k++) {
if (a[k] == n) {
a.splice(k, 1);
}
};
};
};
console.log('не повторяются ' + a);
console.log('повторяются ' + b);
____
5,8,4,3,9,5,1,6,3,5,2,8,7,4,5,3,0,5,6,6
не повторяются 9,1,2,7,0
повторяются 5,8,3,6,4
А, ну это тупо двойным циклом, перегонять уникальные элементы в другой список, с постоянным сканированием второго для проверки на наличие элемета. Очень глупо и неэффективно.
Вариант номер 2 - сортируем исходный список и сканируем его, увеличивая счетчик если новый элемент не равен предыдущему.
Вариант номер 2 - сортируем исходный список и сканируем его, увеличивая счетчик если новый элемент не равен предыдущему.
from time import time
from random import seed, randint
seed(0)
for N in [1000, 2_000, 4_000]:
~~~~print('N =', N)
~~~~A = [randint(0,1000_0) for _ in range(N)]
~~~~#Нормально
~~~~stt = time()
~~~~print(len(set(A)))
~~~~print(time()-stt);print()
~~~~#Бег в мешках
~~~~stt = time()
~~~~B = []
~~~~for a in A:
~~~~~~~~if not a in B:
~~~~~~~~~~~~B.append(a)
~~~~print(len(B))
~~~~print(time()-stt);print()
~~~~#Бег в мешках со связанными руками
~~~~stt = time()
~~~~B = []
~~~~for i in range(len(A)):
~~~~~~~~for j in range(len(B)):
~~~~~~~~~~~~if A[i]==B[j]:
~~~~~~~~~~~~~~~~break
~~~~~~~~else:
~~~~~~~~~~~~B.append(A[i])
~~~~print(len(B))
~~~~print(time()-stt);print('-------------------')
=============================================
Результат работы
==================
N = 1000
948
0.004000663757324219
948
0.017502307891845703
948
0.1295166015625
-------------------
N = 2000
1820
0.004500389099121094
1820
0.05250692367553711
1820
0.5040640830993652
-------------------
N = 4000
3324
0.0050008296966552734
3324
0.2040259838104248
3324
1.708216667175293
-------------------
>>>
PS
Перечитал вопрос, и закрались сомнения в том, что я правильно понял задачу.
Перечитал дополнение, и еще более запутался в понимании.
from random import seed, randint
seed(0)
for N in [1000, 2_000, 4_000]:
~~~~print('N =', N)
~~~~A = [randint(0,1000_0) for _ in range(N)]
~~~~#Нормально
~~~~stt = time()
~~~~print(len(set(A)))
~~~~print(time()-stt);print()
~~~~#Бег в мешках
~~~~stt = time()
~~~~B = []
~~~~for a in A:
~~~~~~~~if not a in B:
~~~~~~~~~~~~B.append(a)
~~~~print(len(B))
~~~~print(time()-stt);print()
~~~~#Бег в мешках со связанными руками
~~~~stt = time()
~~~~B = []
~~~~for i in range(len(A)):
~~~~~~~~for j in range(len(B)):
~~~~~~~~~~~~if A[i]==B[j]:
~~~~~~~~~~~~~~~~break
~~~~~~~~else:
~~~~~~~~~~~~B.append(A[i])
~~~~print(len(B))
~~~~print(time()-stt);print('-------------------')
=============================================
Результат работы
==================
N = 1000
948
0.004000663757324219
948
0.017502307891845703
948
0.1295166015625
-------------------
N = 2000
1820
0.004500389099121094
1820
0.05250692367553711
1820
0.5040640830993652
-------------------
N = 4000
3324
0.0050008296966552734
3324
0.2040259838104248
3324
1.708216667175293
-------------------
>>>
PS
Перечитал вопрос, и закрались сомнения в том, что я правильно понял задачу.
Перечитал дополнение, и еще более запутался в понимании.
Похожие вопросы
- Программирование питона. Найди количество элементов в данном списке
- Python.Какой функцией можно вывести КОЛИЧЕСТВО четных элементов в массиве?
- Найти сумму n-го количества элементов ряда 1, -0.5, 0.25, -0.125, …
- Как в python получить элемент из списка по нескольким значениям
- Нахождение индексов максимального и минимального элемента массива
- Сумма индексов элементов списка
- Первый элемент списка — 1 буква 'а', последний — 33 буквы 'я'. Используй метод append().
- Необходимо написать программу которая посчитает сумму всех элементов в матрице.
- Python Как сделать так чтобы после сгенерированного числа оно не повторялось?
- PYTHON! Требуется определить количество способов выплаты n рублей монетами по 1, 2, 5 и 10 рублей.
Перечитал вопрос, и закрались сомнения в том, что я правильно понял задачу.
Перечитал дополнение, и еще более запутался в понимании.