我有一个for循环语句,返回了数百万的数字(确定有点夸张:)。我如何告诉它停止在第50个结果?
接缝很简单。虽然无法找到解决方案。不能使用我看到在这里使用的很多模块。即使在基本的数学模块中,我们也受限于我们可以使用的东西。所以,如果可能的话,请在答案中做到非常基础。谢谢
使用python。
e.g。范围(0,99999999)或f ='s'* 50000000
..仅打印这两项的50项结果。
答案 0 :(得分:2)
您可以使用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
答案 1 :(得分: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]
但这需要首先构建完整的序列,在您的情况下这可能是也可能不可行。