遍历列表并返回一个项目
Iterate through list and going back one item
elementList = [ 0.05, 0.07, 0.08, 0.15, 0.25, 0.32, 0.4 ]
pathLength = elementList[-1]
itElement = iter(elementList)
for a in itElement:
b = next(itElement)
c = next(itElement)
elementSize1 = b - a
percentOfPathElement.append(elementSize1/pathLength)
elementSize2 = c - b
percentOfPathElement.append(elementSize2/pathLength)
我有一个曲线上的点列表,我需要计算它们之间的距离,并将 Value/pathLength 附加到列表中。
所以我需要做:
0.07-0.05
0.08-0.07
0.15-0.08
etc...
如果我运行上面的代码,当它到达循环末尾时,它会跳过一个计算,因为"a"转到下一个值,当我真的需要返回一个值时.
这叫做邻差。让你的方法奏效:
itElement = iter(elementList)
a = next(itElement)
for b in itElement:
elementSize1 = b - a
percentOfPathElement.append(elementSize1/pathLength)
a = b
每次迭代打印 a
和 b
得到:
0.05 0.07
0.07 0.08
0.08 0.15
0.15 0.25
0.25 0.32
0.32 0.4
和percentOfPathElement
为:
[0.05000000000000001, 0.024999999999999988, 0.17499999999999996, 0.25, 0.17500000000000002, 0.20000000000000004]
如果您需要遗漏最后一个元素,请将 itElement = iter(elementList)
更改为 itElement = iter(elementList[:-1])
。
您还可以使用列表理解,例如(从 Kasra AD 修改):
percentOfPathElement = [(b - a) / pathLength for a, b in zip(elementList, elementList[1:])]
或者(修改自 Blckknght):
import operator
percentOfPathElement = [diff / pathLength for diff in map(operator.sub, elementList[1:], elementList)]
这些与第一个版本的工作方式相同,但可能更难理解。
你可以只使用 zip
函数,得到想要的对然后计算子:
>>> elementList = [ 0.05, 0.07, 0.08, 0.15, 0.25, 0.32, 0.4 ]
>>> [j-i for i,j in zip(elementList,elementList[1:])]
[0.020000000000000004, 0.009999999999999995, 0.06999999999999999, 0.1, 0.07, 0.08000000000000002]
elementList = [ 0.05, 0.07, 0.08, 0.15, 0.25, 0.32, 0.4 ]
pathLength = elementList[-1]
itElement = iter(elementList)
for a in itElement:
b = next(itElement)
c = next(itElement)
elementSize1 = b - a
percentOfPathElement.append(elementSize1/pathLength)
elementSize2 = c - b
percentOfPathElement.append(elementSize2/pathLength)
我有一个曲线上的点列表,我需要计算它们之间的距离,并将 Value/pathLength 附加到列表中。
所以我需要做:
0.07-0.05
0.08-0.07
0.15-0.08
etc...
如果我运行上面的代码,当它到达循环末尾时,它会跳过一个计算,因为"a"转到下一个值,当我真的需要返回一个值时.
这叫做邻差。让你的方法奏效:
itElement = iter(elementList)
a = next(itElement)
for b in itElement:
elementSize1 = b - a
percentOfPathElement.append(elementSize1/pathLength)
a = b
每次迭代打印 a
和 b
得到:
0.05 0.07
0.07 0.08
0.08 0.15
0.15 0.25
0.25 0.32
0.32 0.4
和percentOfPathElement
为:
[0.05000000000000001, 0.024999999999999988, 0.17499999999999996, 0.25, 0.17500000000000002, 0.20000000000000004]
如果您需要遗漏最后一个元素,请将 itElement = iter(elementList)
更改为 itElement = iter(elementList[:-1])
。
您还可以使用列表理解,例如(从 Kasra AD 修改):
percentOfPathElement = [(b - a) / pathLength for a, b in zip(elementList, elementList[1:])]
或者(修改自 Blckknght):
import operator
percentOfPathElement = [diff / pathLength for diff in map(operator.sub, elementList[1:], elementList)]
这些与第一个版本的工作方式相同,但可能更难理解。
你可以只使用 zip
函数,得到想要的对然后计算子:
>>> elementList = [ 0.05, 0.07, 0.08, 0.15, 0.25, 0.32, 0.4 ]
>>> [j-i for i,j in zip(elementList,elementList[1:])]
[0.020000000000000004, 0.009999999999999995, 0.06999999999999999, 0.1, 0.07, 0.08000000000000002]