2024-04-27 04:52:52 发布
网友
list1 = [1, 2, 3, 4]
我正试图找出一种方法来更改每个打印i的步长值
我试过的
r = 0 for i in range(0, 10, list1[r]): print i r = r + 1
您必须迭代步骤,而不是元素:
index = 0 for i in range(len(your_list)): if (index+i)>=len(your_list): break else: print your_list[index+i] index = index + i
列表[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]上的输出:
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
1 2 4 7 11 16
列表["a","b","c","d","e","f","g","h","i"]上的输出:
["a","b","c","d","e","f","g","h","i"]
a b d g
考虑到你的评论,你想要的是:
>>> [range(0,10, i) for i in list1] [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 2, 4, 6, 8], [0, 3, 6, 9], [0, 4, 8]]
更新: 由于我们无法在迭代时更改range()步骤:
range()
>> for el in list1: >>> print range(0, 10, el) [*0*, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, *2*, 4, 6, 8] [0, 3, *6*, 9] [0, 4, 8] (?)
上一个范围中没有元素
我建议使用while循环实现您自己的生成器。示例-
while
def varied_step_range(start,stop,stepiter): step = iter(stepiter) while start < stop: yield start start += next(step)
那么你可以用这个作为-
for i in varied_step_range(start,stop,steplist): #Do your logic.
我们做step = iter(stepiter),这样stepiter就可以是任何类型的iterable
step = iter(stepiter)
stepiter
演示-
>>> def varied_step_range(start,stop,stepiter): ... step = iter(stepiter) ... while start < stop: ... yield start ... start += next(step) ... >>> for i in varied_step_range(0,10,[1,2,3,4]): ... print i ... 0 1 3 6
您必须迭代步骤,而不是元素:
列表
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
上的输出:列表
["a","b","c","d","e","f","g","h","i"]
上的输出:考虑到你的评论,你想要的是:
更新: 由于我们无法在迭代时更改
range()
步骤:上一个范围中没有元素
我建议使用
while
循环实现您自己的生成器。示例-那么你可以用这个作为-
我们做
step = iter(stepiter)
,这样stepiter
就可以是任何类型的iterable演示-
相关问题 更多 >
编程相关推荐