from random import random
N = 10
arr = [0] * N
for i in range(N):
arr[i] = int(random() * 50)
print(arr)
Пример решения классическим способом:
for i in range(N-1):
for j in range(i+1, N):
if arr[i] == arr[j]:
print("Есть одинаковые")
quit()
print("Все элементы уникальны")
Здесь j принимает значения от следующего элемента за тем, для которого ищется совпадение, до последнего в списке. Сравнивать элемент с индексом i с элементами, стоящими впереди него, не надо, т. к. эти сравнения уже выполнялись на предыдущих итерациях внешнего цикла.
Решение задачи с помощью множества:
setarr = set(arr)
if len(arr) == len(setarr):
print("Все элементы уникальны")
else:
print("Есть одинаковые")
Функция set() преобразует список во множество.
Примеры выполнения кода:
[2, 4, 1, 2, 45, 38, 26, 11, 49, 25]
Есть одинаковые
[44, 49, 21, 19, 23, 27, 34, 9, 41, 31]
Все элементы уникальны
Из списка чисел удалить элементы, значения которых больше 35 и меньше 65. При этом удаляемые числа сохранить в другом списке.
В Python с помощью инструкции del можно удалить элемент списка, указав сам список и индекс удаляемого элемента.
Алгоритм решения задачи выглядит простым. Достаточно перебрать элементы списка и удалить те, которые удовлетворяют условию. Однако при удалении элемента на его место становится следующий, но поскольку мы переходим к следующему элементу, то пропускаем проверку того, что стал на место удаленного. Цикл for использовать нельзя, т. к. меняется количество элементов списка.
Можно использовать цикл while, измеряя на каждой его итерации длину списка, индекс же увеличивать только в том случае, если удаления элемента не произошло.
Достарыңызбен бөлісу: |