Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 3, 2016 19:25:13

aleks14
Зарегистрирован: 2016-04-08
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

задача

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]))
помогите ее написать не используя встроенные функции.кроме def

Офлайн

#2 Окт. 3, 2016 19:31:38

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

задача

 #
def fun(a):
    return [element for element in a if a.count(element) > 1]

Но в этом случаем могут быть повторения…

Отредактировано 4kpt_IV (Окт. 3, 2016 19:33:25)

Офлайн

#3 Окт. 3, 2016 19:35:58

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

задача

По Вашему коду

 #
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]))

Офлайн

#4 Окт. 3, 2016 19:39:29

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

задача

в принципе Вы начали правильно, но есть пару замечаний.
Что такое 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]))

Офлайн

#5 Окт. 3, 2016 19:54:30

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

задача

Romissevd

aleks14
Найти и вывести все числа, которые присутствуют в списке более одного раза.

Офлайн

#6 Окт. 3, 2016 20:19:18

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

задача

 >>> 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)

Офлайн

#7 Окт. 3, 2016 20:27:22

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

задача

Rodegast

aleks14
помогите ее написать не используя встроенные функции.кроме def

Офлайн

#8 Окт. 3, 2016 20:29:53

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

задача

 >>> 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]



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#9 Окт. 3, 2016 22:23:30

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

задача

Все-таки читать посты нужно до конца

4kpt_IV
Но в этом случаем могут быть повторения…

Офлайн

#10 Окт. 4, 2016 10:41:54

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

задача

> Но в этом случаем могут быть повторения…

 >>> 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])



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version