Тип по-прежнему str, а не float

Не превращается в поплавок:

def floaty(s):
try:
    k = 0
    for elem in s:
        if 0 <= float(elem) <= 1:
            k += 1
    if k == len(s):
        for elem in s:
            elem = float(elem)
        return s
    else:
        return None
except ValueError:
    return None

тип элементов списка [0.1, 0.2] по-прежнему str, а не float

    for elem in s:
        elem = float(elem)
    return s

почему это не работает?

Потому что переназначение elem не влияет на ваш список. Переменные Python так не работают. Используйте s = [float(elem) for elem in s].

khelwood 09.12.2020 21:38

Функция имеет return s, то есть то же самое значение, которое было передано. Так что, конечно, это все еще строка.

John Gordon 09.12.2020 21:42
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
86
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вместо

  for elem in s:
        elem = float(elem)

делать:

s = [float(x) for x in s]

Что представляет собой понимание списка и создаст новый список float версий для каждого элемента в списке.

Python не поддерживает такое переопределение переменных. Таким образом, вы не можете переопределить переменную, которую используете в цикле, в данном случае это elem. Я предлагаю создать другой список и вернуть его вместо возврата старого.

это должен быть комментарий, а не ответ

coderoftheday 09.12.2020 21:42

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