Форум сайта python.su
0
a =
Найти и вывести все числа, которые присутствуют в списке более одного раза.
пытаюсь написать ее вот так
def fun(a): for c in a: if c in b: b.append(c) return b print(fun([33, -1, 5, 2, 0, 33, 11, 0, -2, 77, 5]))
Офлайн
49
# def fun(a): return [element for element in a if a.count(element) > 1]
Отредактировано 4kpt_IV (Окт. 3, 2016 19:33:25)
Офлайн
49
По Вашему коду
# def fun(a): b = [] for c in a: if a.count(c) > 1 and not c in b: b.append(c) return b print(fun([33, -1, 5, 2, 0, 33, 11, 0, -2, 77, 5]))
Офлайн
76
в принципе Вы начали правильно, но есть пару замечаний.
Что такое b? Вы не определили объект( в данном случае список ), но пытаетесь в него что-то добавить.
Проверка на вхождение. Тут более уместно условие если с НЕТ в списке b.
И вернуть результат нужно после полного выполнения цикла, а в Вашем случае функция прекратит работу после первого прохода.
def fun(a): b = [] for c in a: if c not in b: b.append(c) return b print(fun([33, -1, 5, 2, 0, 33, 11, 0, -2, 77, 5]))
Офлайн
49
Romissevd
aleks14
Найти и вывести все числа, которые присутствуют в списке более одного раза.
Офлайн
186
>>> a = [33, -1, 5, 2, 0, 33, 11, 0, -2, 77, 5] >>> filter(lambda x: a.count(x) > 1, a) [33, 5, 0, 33, 0, 5]
Отредактировано Rodegast (Окт. 3, 2016 20:21:00)
Офлайн
49
Rodegast
aleks14
помогите ее написать не используя встроенные функции.кроме def
Офлайн
186
>>> a = [33, -1, 5, 2, 0, 33, 11, 0, -2, 77, 5] >>> [ x for x in a if a.count(x) > 1 ] [33, 5, 0, 33, 0, 5]
Офлайн
49
Все-таки читать посты нужно до конца 
4kpt_IV
Но в этом случаем могут быть повторения…
Офлайн
186
> Но в этом случаем могут быть повторения…
>>> a = [33, -1, 5, 2, 0, 33, 11, 0, -2, 77, 5] >>> set( x for x in a if a.count(x) > 1 ) set([0, 33, 5])
Офлайн