我是Python编程新手,正在尝试编写一个For/While循环,该循环基于循环中的当前值返回列表中相对于另一个值的值。我能想到的与excel最接近的类似函数是OFFSET函数,但我的搜索没有找到答案。此外,我相信excel中的VBA允许您使用相对单元格,而不是绝对单元格。也许这是一个更好的类似函数。
例如:
假设我有一个简单的列表abc =[2,5,21,54,23,12,23],我想创建一个变量,它是循环中的当前值除以先前值,所以在这个例子中,5除以2,21除以5,等等。
代码示例如下所示:
for val in abc:
xyz = val/val[-1]
print(xyz)
我知道我需要为第一次迭代编写一个异常,语法是不正确的,但我只是想传达我的信息。
我的搜索发现,Pandas有能力做到这一点,但我想知道是否有可能没有Pandas。将不胜感激的任何投入。
3条答案
按热度按时间3ks5zfa01#
你不能只按值循环,因为值没有它在列表中位置的上下文。一种方法是按索引循环:
或者,
zip
列表及其尾部:直觉告诉我们为什么会这样:
tv6aics12#
您可以使用
enumerate
来执行此操作:然而,这里有一个陷阱,Python可以有负索引,它会在列表的另一边绕圈,如果你做了上面的操作,第一次通过循环你会看到它这样做:
为了避免这种情况,你可以这样做:
导致以下输出:
xhv8bpkk3#
Python样式:
结果: