Python3:在列表中存储要在函数中使用的范围?

Python3:在列表中存储要在函数中使用的范围?,python,list,function,python-3.x,range,Python,List,Function,Python 3.x,Range,我需要创建一个每个数字的列表,直到一个非常大的特定数字。然后,这个数字列表需要经过我创建的一个函数,该函数将吐出返回True的每个数字。从所有这些真实的数字中,我需要找到第300个并打印出来 def p(n): return n==n[::-1] def s(n): return list(filter(p ,n)) 这是列表将要执行的函数。小费 >>> list(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 请注意,这一切听起

我需要创建一个每个数字的列表,直到一个非常大的特定数字。然后,这个数字列表需要经过我创建的一个函数,该函数将吐出返回True的每个数字。从所有这些真实的数字中,我需要找到第300个并打印出来

def p(n):
  return n==n[::-1]
def s(n):
  return list(filter(p ,n))
这是列表将要执行的函数。小费

>>> 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

如果我理解正确,您可以使用生成器和
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))

措辞含糊不清令人困惑。是否有实际的用例,或者这是一个家庭作业?另外,您是否可以提供示例输入/输出/中间步骤?这里的实际问题是什么?这是一个很棒的解决方案。你能不能用一个生成器而不是
map
,这样它就可以一直运行下去?@Sammusmann OP被标记为Py3,所以
map
被认为是一个生成器。否则,你可以用
xrange
替换
range
,用
imap
替换
map
(但是,是的,我想人们可以写
nums=(str(n)表示范围(300)中的n))
或其他东西)啊——我生活在一个2.x的世界里,不知道这些返回Py3中的iterables。谢谢