Как уже упоминали другие, ваша проблема связана с отступом в вашем операторе if. Если ваша цель - получить отфильтрованный список только строк из исходного списка, а не просто распечатать список, который вы могли бы go с помощью:
def filter_list(arr):
results = list()
for x in arr:
if isinstance(x, str):
results.append(x)
return results
Другой альтернативой будет использование популярного функционального подхода. в python и, вероятно, знакомый из javascript:
results = filter(lambda x: isinstance(x, str), arr)
В приведенном выше примере results
будет итератором, поскольку filter является генератором функция, функция, для которой результаты могут быть повторены. Если вы хотите получить обратно список, вы можете добавить list(results)