#python
#python
Вопрос:
numbers = {}
#assign values to the dictionary 'numbers'
for i in range(5):
numbers[i**2] = i
#function to check if number is in 'numbers' dictionary
def check(x):
if x in numbers:
return True
else:
return False
#list with random numbers
rand_nums = [8,9,25,16,18]
filtered_list = filter(check,rand_nums)
#printing 'filtered_list'
# NOTE:- using list() constructor for printing filter object
print(list(filtered_list))
#function to add 1
def add(x):
return x 1
mapped_list = map(add,filtered_list)
#printing 'mapped_list'
# NOTE:- using list() constructor for printing filter object
print(list(mapped_list))
Ответ №1:
функция фильтра всегда возвращает повторяющийся объект (точно так же, как генератор). когда ваш код print(list(filtered_list))
выполняется, значение filtered_list
становится пустым. Итак, позже, когда вы сопоставили тот же пустой отфильтрованный список, выполнив этот код: mapped_list = map(add,filtered_list)
функция map получает пустой список.
Измените свой код следующим образом: filtered_list = list(filter(check,rand_nums))
чтобы получить ожидаемый результат.
Ответ №2:
Не уверен, почему вы получаете пустой отображенный список.
Я попробовал ваш код (после небольшой очистки)
numbers = {}
for i in range(5):
numbers[i ** 2] = i
def check(x):
return x in numbers
rand_nums = [8, 9, 25, 16, 18]
filtered_list = list(filter(check, rand_nums))
print('filtered list: {}'.format(filtered_list))
def add(x):
return x 1
mapped_list = list(map(add, filtered_list))
print('mapped list: {}'.format((mapped_list)))
Вывод (python 3.6.3)
filtered list: [9, 16]
mapped list: [10, 17]