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

Python,但在n个元素之后停止,python,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)

我有一个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
计数器=0
当计数器<3时:
如果计数器>=len(我的列表):
打破
做事(我的清单[柜台])
计数器+=1

您可以使用
itertools.islice

for element in itertools.islice(my_list, 0, 3):
    do_stuff(element)
当然,如果它实际上是一个列表,那么您可以使用常规切片:

for element in my_list[:3]:
    do_stuff(element)
正常序列上的常规切片是“宽容”的,因为如果您要求的元素多于现有元素,则不会引发异常。

切片列表:

for element in my_list[:3]:
    do_stuff(element)
表示如果列表在这些索引上没有元素,则不会出现任何错误,因此您可以安全地在包含少于3个元素的列表上使用这些元素。列表切片返回一个新列表

更有效的方法(对于大切片)是使用:


@如果mhawke的答案实际上是一个
列表
或其他支持切片接口的东西,那么它就是完美的

要获得更通用的iterable类型,请尝试最方便的:


更有效率?它只有3个元素!我不相信它实际上更有效。。。就python操作而言,对列表进行切片是非常快的,根据我的经验,
listiter.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
在大多数其他对象上的运行速度都比
\uuu。包含3个元素的列表的内存开销也非常小。我认为使用
islice
的真正原因是支持iterables,而不仅仅是序列对象。我认为这样人们就可以编写类似
slice=islice的东西(fancy_salami,0,3);print(“谁想要{}?”.format(下一个(切片))
@BurhanKhalid——是的,就是它了。:-)
for element in islice(my_list, 0, 3): # or islice(my_list, 3)
    do_stuff(element)
for element in my_list[:3]:
    do_stuff(element)
for ii, element in enumerate(my_list):
    if ii>=3:
        break
    do_stuff(element)