一般的菜鸟问题。我正在处理长整数/浮点值列表并浪费大量时间。
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
通过指定数量的值进行迭代的最有效方法是什么,因为效率总是受到重视,而这些简单的迭代是我可以获得某些东西的地方。
答案 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]