2016-11-20 3 views
4

Я знаю, что можно создать список диапазон номеров:Как создать список диапазонов с инкрементным шагом?

list(range(0,20,1)) 
output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 

но то, что я хочу сделать, это приращение шага на каждой итерации:

list(range(0,20,1+incremental value) 

Р.Е. когда incremental = +1

expected output: [0, 1, 3, 6, 10, 15] 

Возможно ли это в python?

+0

Вам, вероятно, придется написать генератор самостоятельно. –

+0

Когда 'incremental_value' равно единице, результатом будет' [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] '. Или вы хотите увеличить шаг на один на каждую итерацию? – ForceBru

+0

@ForceBru, ваше право. Я хочу добавить добавочное значение к шагу, чтобы стать новым значением шага p.e. step = 1 + 1 = 2, новый шаг = 2, новый шаг = 3, новый шаг = 4 и т. д. Да увеличивайте шаг на единицу на каждой итерации. – Reman

ответ

5

Это возможно, но не с range:

def range_inc(start, stop, step, inc): 
    i = start 
    while i < stop: 
     yield i 
     i += step 
     step += inc 
4

Вы можете сделать что-то вроде этого:

def incremental_range(start, stop, step, inc): 
    value = start 
    while value < stop: 
     yield value 
     value += step 
     step += inc 

list(incremental_range(0, 20, 1, 1)) 
[0, 1, 3, 6, 10, 15] 
+0

Спасибо Бэтмен, ты дал тот же ответ, что и ForceBru. Я дал согласие на его ответ только потому, что он был на 1 минуту раньше :) Однако я очень ценю ваш ответ. – Reman

0

я упростил код выше и дальше. Подумайте, это сделает трюк.

List=list(range(1,20)) 
a=0 
print "0" 
for i in List: 
    a=a+i 
    print a 

Указание nth диапазона, дает все номера с определенной схеме.

+1

где используется b и зачем использовать «l»? «Никогда не используйте символы« l »(строчная буква el),« O »(буква верхнего регистра oh) или« I »(глаз в верхнем регистре) как имена одиночных символов. В некоторых шрифтах эти символы неотличимы от цифры 1 и 0. При попытке использовать «l» вместо этого используйте «L». (http://legacy.python.org/dev/peps/pep-0008/#names-to-avoid) Также ваш код не выводит список, так как Reman хотел –

+0

Я являюсь чем-то новым эти программы. –

+0

Брат и благодарность –