#python #python-3.x
#python #python-3.x
Вопрос:
Снова задаю глупый вопрос. Я пытаюсь получить список, состоящий из каждого значения, которое не равно -1, из списка значений с плавающей точкой и -1. Каким-то образом я получаю только первое значение из своих циклов. Моя последняя задача — распечатать количество записей в моем новом списке.
flist = [9.0, 5.5, 6.7, 4.3, -1, 4.8, 8.0, -1, 7.0, 6.3, 4.5, 7.75, 6.5]
for i in flist:
if i != 1:
new_list = i
#the problem is when i tried to print out the number of entries
print(len(new_list))
Ошибка типа: объект типа ‘float’ не имеет функции len()
Итак, я попытался преобразовать это в список строк, и вот что у меня получилось:
flist = [9.0, 5.5, 6.7, 4.3, -1, 4.8, 8.0, -1, 7.0, 6.3, 4.5, 7.75, 6.5]
for i in flist:
if i != 1:
new_list = i
new_list2 = map(str, new_list)
print(len(list3))
Теперь я получаю следующую ошибку:
Ошибка типа: объект ‘float’ не может быть повторен
Комментарии:
1. тег jupyter-notebook здесь не уместен.
2. Я новичок, поэтому mb sry. Поскольку я использовал jupyter notebook, я вставил его.
Ответ №1:
Вам нужно добавить в список:
flist = [9.0, 5.5, 6.7, 4.3, -1, 4.8, 8.0, -1, 7.0, 6.3, 4.5, 7.75, 6.5]
new_list = []
for f in flist:
if f != -1:
new_list.append(f)
Или используйте понимание списка (лучший способ):
flist = [9.0, 5.5, 6.7, 4.3, -1, 4.8, 8.0, -1, 7.0, 6.3, 4.5, 7.75, 6.5]
new_list = [f for f in flist if f != -1]
В обоих случаях new_list
является
[9.0, 5.5, 6.7, 4.3, 4.8, 8.0, 7.0, 6.3, 4.5, 7.75, 6.5]
Если вам нужно только количество, а не сам список, вы можете сделать это:
flist = [9.0, 5.5, 6.7, 4.3, -1, 4.8, 8.0, -1, 7.0, 6.3, 4.5, 7.75, 6.5]
count = sum(1 for f in flist if f != -1)
Ответ №2:
new_list = [i for i in flist if i!=-1]
вы не инициализировали список. Также при добавлении элементов в список вы должны использовать append
.