繁体   English   中英

如何从声明中返回(或打印)最大命中数?

[英]How do I return (or print) a maximum number of hits from a statement?

我有一个for循环语句,返回数百万的数字(确定有点夸大:)。 我如何告诉它停止在第50个结果?

接缝很简单。 虽然无法找到解决方案。 不能使用我看到在这里使用的很多模块。 即使在基本的数学模块中,我们也受限于我们可以使用的东西。 所以,如果可能的话,请在答案中做到非常基础。 谢谢

使用python。

例如范围(0,99999999)或f ='s'* 50000000

..打印只有这两个的50个结果。

您可以使用enumerate为索引提供索引以及for循环中的值。 即使我在这里使用列表,我假设你正在使用某种迭代器,否则你可以像mylist[:50]那样切割列表。 例如,这将打印到第50个条目。

for i, val in enumerate(range(600)):
    if i == 50:
        break
    print i

或者每50个值打印一次

for i, val in enumerate(range(600), start=1):
    if i % 50 == 0:
        print val

你也可以使用while循环。

i = 0
some_iterator = iter(range(600))
while i < 50:
    print some_iterator.next()
    i += 1

你想使用itertools.islice

In [22]: import itertools as it

In [23]: for elem in it.islice(it.count(), 50):
   ....:     print elem,
   ....:     
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49

请注意, itertools.count()是一个无限迭代器。

另一种可能性是使用itertools.takewhile

In [24]: for elem in it.takewhile(lambda x: x < 50, it.count()):
   ....:     print elem,
   ....:     
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49

显然我假设你正在使用iterables而不是序列。 如果您有序列,那么您可以简单地使用内置切片语法:

sequence[:50]

但这需要首先构建完整的序列,这在您的情况下可能是可行的,也可能是不可行的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM