2015-07-17 2 views
-1

Бит общего вопроса о нобе. Я в большой степени занимаюсь длинными списками значений integer/float и трачу много времени.Итерационные части списков - PYTHON

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

взгляд в список нарезка/indexing –

+0

Синтаксис python для получения только части списка - это 'myList [x: y]' для получения значений между 'x' и' y'. Будет ли это работать для вашего случая использования? – JPeroutek

+0

Google «python list slice» –

ответ

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

Это путь. Однако я не уверен, что это лучший.

0

Со списком вы можете получить только те предметы, которые вы хотите со списком [начало: конец].

Так, чтобы пропустить первый список [1:] или последний список [: - 1] или первые три и последние три списка [3: -3]

, если вы не знаете, как может элементы в список для запуска вы можете сделать len (list), чтобы получить номер. Так что, если вы имели X элементы и хотели 3 группы:

numberofgroups = len(list)/3 

сделать для перебрать только некоторые из них:

start_index=1 

end_index=-1 

for item in my_list[start_index:end_index] 
    print item 
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] 
Смежные вопросы