我有一个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 :(得分: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)