0

非常に大きな特定の番号まで、すべての番号のリストを作成する必要があります。この数字のリストは、作成した関数を通過する必要があります。この関数は、True を返すすべての数字を吐き出します。これらすべての真の数字から、300 番目の数字を取得して印刷する必要があります。

def p(n):
  return n==n[::-1]
def s(n):
  return list(filter(p ,n))

これは、リストが通過する関数です。チップ?

4

2 に答える 2

2

私の理解が正しければ、ジェネレーターと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))
于 2012-10-22T18:43:31.210 に答える
0
>>> 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
于 2012-10-22T18:32:10.007 に答える