非常に大きな特定の番号まで、すべての番号のリストを作成する必要があります。この数字のリストは、作成した関数を通過する必要があります。この関数は、True を返すすべての数字を吐き出します。これらすべての真の数字から、300 番目の数字を取得して印刷する必要があります。
def p(n):
return n==n[::-1]
def s(n):
return list(filter(p ,n))
これは、リストが通過する関数です。チップ?
非常に大きな特定の番号まで、すべての番号のリストを作成する必要があります。この数字のリストは、作成した関数を通過する必要があります。この関数は、True を返すすべての数字を吐き出します。これらすべての真の数字から、300 番目の数字を取得して印刷する必要があります。
def p(n):
return n==n[::-1]
def s(n):
return list(filter(p ,n))
これは、リストが通過する関数です。チップ?
私の理解が正しければ、ジェネレーターとislice
from itertools import islice
nums = map(str, range(11, 300))
palindromes = (num for num in nums if num == num[::-1])
ix = islice(palindromes, 15, None)
print(next(ix))
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
これはすべて非常に遅く聞こえることに注意してください。おそらく、多くの最適化を行うことができます。たとえば、回文チェック ( p(n)
) を変更して、リストの前半のみを反転した後半と比較することができます。または、要素を最初と一番上から同時に反復し、失敗するとすぐに false を返します。
def checkPalindrome (seq):
for i in range(len(seq)):
if seq[i] != seq[-i-1]:
return False
return True