Проверьте идеальные квадраты в списке

Я хочу определить числа, которые являются идеальными квадратами в списке чисел, например:

a = [3, 4, 8, 16, 21, 58, 144] # return [4, 16, 144] 

4 Solutions collect form web for “Проверьте идеальные квадраты в списке”

Когда подход заключается в создании предиката (функция возвращает true или false) и применяет его с filter () :

 >>> def is_perfect_square(n): return round(n ** 0.5) ** 2 == n >>> list(filter(is_perfect_square, [3, 4, 8, 16, 21, 58, 144])) [4, 16, 144] 

Или для тех, кто предпочитает перечислить списки по фильтру () :

 >>> [x for x in [3, 4, 8, 16, 21, 58, 144] if is_perfect_square(x)] [4, 16, 144] 

Идеальный квадратный тест работает, беря квадратный корень из числа и округляя его до ближайшего целого числа, перестраивая его и сравнивая с исходным номером. Шаг квадратного корня может иметь небольшую ошибку округления, но повторное квадратирование округленного целого будет точным. Это должно быть несколько надежным, за исключением очень больших входов.

Вы можете комбинировать math.sqrt() и is_integer() для фильтрации списка, например:

 import math a = [3, 4, 8, 16, 21, 58, 144] print [x for x in a if math.sqrt(x).is_integer()] 

Можешь попробовать:

 >>> square_list = [] >>> a = [3, 4, 8, 16, 21, 58, 144] >>> def perfect_square(number): return (number**0.5) % int(number**0.5) == 0 >>> for data in a: if perfect_square(data): square_list.append(data) >>> print square_list [4, 16, 144] 

Используя этот тест для идеальных квадратов:

 def is_square(n): for b in range(n): n -= (2 * b + 1) if n <= 0: return not n 

… вы можете найти те, которые появляются в a с простым пониманием списка:

 >>> [n for n in a if is_square(n)] [4, 16, 144] 
  • Как добавить папку в путь поиска для данной среды Anaconda?
  • Как я могу написать asyncio сопрограммы, которые, возможно, действуют как обычные функции?
  • in и index в списке
  • Ошибка Python3: initial_value должно быть str или None
  • Веб-сайт, не разрешающий доступ
  • Лучший способ преобразовать строку в байты в Python 3?
  • Как написать скребковый контент в файл CSV?
  • matplotlib 3D plot, plot_surface black
  • Как использовать python 3 в качестве скрипта сборки в конфигурации не-python travis?
  • Python 3 и статическая типизация
  • Добавление баров ошибок поверх гистограмм в Bokeh
  • Python - лучший язык программирования в мире.