每个Python但在n个元素之后停止

时间:2014-06-17 04:29:12

标签: python

我有一个dicts列表,可以是0到100个元素长。我想只查看前三个元素,如果列表中的元素少于三个,我不想抛出错误。我如何在python中干净利落地完成这项工作?

伪码:

for element in my_list (max of 3):
    do_stuff(element)
编辑:此代码有效,但感觉非常不洁净。我觉得python有更好的方法来做到这一点:

counter = 0
while counter < 3:
    if counter >= len(my_list):
        break

    do_stuff(my_list[counter])
    counter += 1

4 个答案:

答案 0 :(得分:5)

您可以使用itertools.islice

for element in itertools.islice(my_list, 0, 3):
    do_stuff(element)

当然,如果它实际上一个列表,那么你可以使用常规切片:

for element in my_list[:3]:
    do_stuff(element)

正常序列上的常规切片是“宽容的”,因为如果你要求的元素多于那里,则不会引发任何异常。

答案 1 :(得分:4)

切片列表:

for element in my_list[:3]:
    do_stuff(element)

Documentation表示如果列表中没有这些索引上的元素,则不会出现任何错误,因此您可以安全地在包含少于3个元素的列表中使用该错误。列表切片返回一个新列表。

稍微更有效的方式(对于大切片)将使用itertools.islice

for element in islice(my_list, 0, 3): # or islice(my_list, 3)
    do_stuff(element)

答案 2 :(得分:3)

for element in my_list[:3]:
    do_stuff(element)

答案 3 :(得分:0)

@ mhawke的答案是完美的,如果它实际上是list或支持切片界面的其他东西。

对于更通用的可迭代类型,请尝试使用方便enumerate

for ii, element in enumerate(my_list):
    if ii>=3:
        break
    do_stuff(element)