迭代列表的一部分 - PYTHON

时间:2015-07-17 16:00:06

标签: python list function loops

一般的菜鸟问题。我正在处理长整数/浮点值列表并浪费大量时间。

my_list = [1,2,3,4,5,6,7,8,9,10.....] etc.

说我想将该列表的一部分传递给函数。它可能是前3个元素,然后是以下3个元素....它也可以是4,5,6的组......甚至可能要求我每次都使用不同数量的元素。

def myfunc(x,y,z):
 do something
 return something

通过指定数量的值进行迭代的最有效方法是什么,因为效率总是受到重视,而这些简单的迭代是我可以获得某些东西的地方。

3 个答案:

答案 0 :(得分:0)

len_ml = len(my_list)
for i in range(0, len_ml, 3):
  chunk = my_list[i:min(len_ml, i+3)]

这是一种方式。不过,我不确定它是最好的。

答案 1 :(得分:0)

使用列表,您可以通过列表[start:end]获得所需的项目。

所以跳过第一个列表[1:]或最后一个列表[: - 1]或前3个和后3个列表[3:-3]

如果您不知道列表中的项目如何开始,您可以使用len(列表)来获取数字。所以,如果你有X个项目,并想要3组:

numberofgroups = len(list) / 3

仅对某些循环进行循环:

start_index=1

end_index=-1

for item in my_list[start_index:end_index]
    print item

答案 2 :(得分:0)

>>>my_list = [1,2,3,4,5,6,7,8,9,10]
>>>group_len = 3 #you can change the length as per your requirement i.e 2,3,4,5,6...
>>>for i in range(0,len(my_list)):
       if i*group_len < len(my_list):
           my_list[i*group_len:(i+1)*group_len]
       else:
           break;
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[10]

group_len = 5

的结果
[1, 2, 3, 4, 5]
[6, 7, 8, 9, 10]