Есть ли в python функция, которая возвращает true, если все члены итерируемого являются true?

Я пытаюсь изучить различные способы делать простые вещи в Python, а также немного узнать о некоторых функциональных практиках. У меня есть некоторые цифры, которые пользователь вводит, и я хочу знать, действительно ли они являются числами. Я придумал такое классическое решение:

def foo(list_of_inputs):
    for n in list_of_inputs:
       if not hasattr(n, "real"):
           # some number is not a number!
           return False
    # all are numbers
    return True

Но потом я выяснил эту другую "вещь", которая может иметь некоторый потенциал:

def foo(list_of_inputs):
    bool_list = map(lambda input: hasattr(input, "real"), list_of_inputs)
    return reduce(lambda x, y: x == y, bool_list)

Я думаю, что, возможно, функция, которая возвращает "True", если все члены коллекции, итерируемые, или что-то другое, правильное понятие, которое я ищу, являются "True", может уже быть чем-то общим, а также, эта вторая попытка не не возвращается, когда "Ложь" найдена, а классическая -... Но я нахожу это элегантным, и, возможно, это потому, что я еще не занимаюсь программированием в целом.

Итак, мой вопрос: каков "лучший" способ сделать это?

2 ответа

Решение

Как уже упоминалось, all Функция будет делать то, что вы хотите. То, что вы описываете, вы пытаетесь сделать, также может быть сделано с помощью str.isnumeric() функция.

def foo(listOfInputs):
    return all(map(str.isnumeric,listOfInputs))

Редактировать: я считаю, что это не на ['1','2','3.14','4'] что немного раздражает. Может быть, кто-то может придумать более умное решение, чем это, но я решил обернуть слегка измененный подход в try:

def foo(listOfInputs):
    try:
        return all(map(float,listOfInputs))
    except ValueError:
        return False

Это работает на:

['1','2','-3','4']
['1','2','3.14','4']

Вы имеете в виду что-то вроде встроенного all функционировать?

Верните True, если все элементы итерируемого являются истинными (или если итерируемое пусто). Эквивалентно:

Другие вопросы по тегам