Нужно написать функцию, которая принимает список и возвращает новый список из неповторяющееся целых чисел. Язык Python
Нужно написать функцию, которая принимает на вход список целых чисел и возвращает новый список, содержащий только уникальные элементы из исходного списка. Это все что мне пришло в голову. Помогите пожалуйста
a = [2, 3, 4, 2, 4, 7]
def list_int(a):
b= []
r = 0
for num in a:
if num in a:
a.remove(a[num])
else:
b.append(num)
return b
Ответы (4 шт):
def unique_elements(input_list):
unique_list = []
for item in input_list:
if item not in unique_list:
unique_list.append(item)
return unique_list
# Пример использования:
input_list = [1, 2, 3, 4, 2, 3, 5]
print(unique_elements(input_list))
Воспользуйтесь множеством set
:
a = [2, 3, 4, 2, 4, 7]
def list_int(incoming_list):
return list(set(incoming_list))
print(list_int(a))
Вывод:
[2, 3, 4, 7]
a = [2, 3, 4, 2, 4, 7]
def list_int(incoming_list):
b = []
for item in incoming_list:
if incoming_list.count(item) == 1:
b.append(item)
return b
print(list_int(a))
Вывод:
[3, 7]
Однострочник (генератор списка):
def list_int(incoming_list):
return [item for item in incoming_list if incoming_list.count(item) == 1]
Если вы просто хотите знать как все это устроено, то вот так:
a = [2, 3, 4, 2, 4, 7]
def remove_equal_elems(some_list: list) -> list:
for item in some_list:
if some_list.count(item) > 1:
some_list.remove(item)
return some_list
print(remove_equal_elems(a))
А если вам без разницы и просто нужен результат, то вам подойдет решение @Amgarak
Решение @Collapse тоже подходит и оно работает быстрее, но забивает память, так как создается новая переменная
Не добавляйте в список элементы и не удаляйте из списка элементы, если этот список сейчас в заголовке цикла for ... in <список>:
. Иногда это можно делать, но там много тонкостей. Пока вы учитесь, следуйте простому правилу: если в цикле хочется изменить список, создайте новый.
collections.Counter
считает какие значения сколько раз входят в спискок. В вашем примере получится такой словарь: {2: 2, 4: 2, 3: 1, 7: 1}
. В цикле остаются только значения с единичными счётчиками:
import collections
a = [2, 3, 4, 2, 4, 7]
print([v for v, c in collections.Counter(a).items() if c == 1])
Если вы боитесь генераторов то так:
a = [2, 3, 4, 2, 4, 7]
b = []
for v, c in collections.Counter(a).items():
if c == 1:
b.append(v)
print(b)
Если вы боитесь импортов и всё ещё боитесь генераторов, то так:
a = [2, 3, 4, 2, 4, 7]
d = {}
for v in a:
d[v] = d.get(v, 0) + 1
b = []
for v, c in d.items():
if c == 1:
b.append(v)
print(b)