Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 7, 2018 21:50:21

lupanton
Зарегистрирован: 2018-03-25
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

any...

Добра всем!
Пытаюсь разобраться с any…
Упрощенно так: хочу сравнить элементы одного списка между собой - если все равны хочу получить True, иначе False.

lst = [1, 2, 1]
if any(x for x in lst if x == 1):
print(True)
else:
print(False)


Выдает True. Помогите, люди добрые. Что я не так понимаю и делаю?

Отредактировано lupanton (Апрель 7, 2018 23:14:18)

Офлайн

#2 Апрель 7, 2018 21:55:32

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

any...

any выдаст True если хоть один элемент будет истинен, тебе подойдёт all



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

Офлайн

#3 Апрель 7, 2018 22:13:37

lupanton
Зарегистрирован: 2018-03-25
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

any...

А вот такое определение может оказать влияние на результат:

from typing import List, Any

Мне нужно функцию сваять типа:

def respons(elem: List[Any]->bool)
***
return

Или тут путаница у меня?

Офлайн

#4 Апрель 7, 2018 22:29:15

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

any...

Причём тут твои типы? all и any это Квантор всеобщности и Квантор существования т.е. функции, типы тут вообще не причём.



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

Отредактировано Rodegast (Апрель 7, 2018 22:30:45)

Офлайн

#5 Апрель 8, 2018 00:09:06

lupanton
Зарегистрирован: 2018-03-25
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

any...

Rodegast
надо определить, все ли элементы массива равны.
Входные: List - формируется автоматически осциллографом и в этом списке 17962 элемента. Если не равны, то снова надо замерять.
Выходные:True или False.
Это часть кода - никакие вводные менять нельзя. в ассертах представлены возможные варианты выходного списка для анализа - никак не могу добиться толку со всеми видами списков - даже этим вот кодом:

 from typing import List, Any
def resp(elements: List[Any]) -> bool:
    d = {}
    d1 = {}
    for x in range(len(list)):
        if list[x] not in d:
            if list[x] not in d1:
                d[list[x]] = x
        else:
            d1[list[x]] = x
            d.pop(list[x])
    if not d:
        print(True)
    else:
        print(False)
if __name__ == '__main__':
    
    assert resp([1, 1, 1]) == True
    assert resp([1, 2, 1]) == False
    assert resp(['a', 'a', 'a']) == True
    assert resp([]) == True
    assert resp([1]) == True

Выдает мне:
 TypeError: object of type 'type' has no len()
Никак не пойму где ошибка?

Отредактировано lupanton (Апрель 8, 2018 00:14:27)

Офлайн

#6 Апрель 8, 2018 00:09:44

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

any...

  
>>> lst = [1, 2, 1]
>>> all(i == lst[0] for i in lst)
False
>>> 
>>> lst = [1, 1, 1]
>>> all(i == lst[0] for i in lst)
True
>>>



Отредактировано py.user.next (Апрель 8, 2018 00:10:00)

Офлайн

#7 Апрель 8, 2018 00:19:26

lupanton
Зарегистрирован: 2018-03-25
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

any...

py.user.next
Спасибо! В задании у меня ерундовина и путаница.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version