我正在使用其API编写一些软件的附加组件。我需要做的是提取必要的数据。 我使用'FOR'去思考API类。每个对象都有属性:index(从0开始),type(Lin,Ptp和其他一些)和value。通过对象列表,我对两种类型的对象感兴趣 - 那些类型为'Lin'或'Ptp'的对象;所以应该满足一些条件:
至于林型:
对于Ptp类型,它总是有自己的值
由于我是Python的初学者,我现在的情况好坏参半,我无法提出合适的算法。
我在想它应该是这样的:
for object in obects:
If object.type == Ptp:
...object gets its own value
elif object.type == Lin:
...
此处,根据[...Lin]
或[Lin...Lin]
或[Ptp...Lin]
答案 0 :(得分:2)
由于我是Python的初学者,我现在的情况好坏参半,我无法提出合适的算法。
如果您尝试提供适当的算法,退后一步。 忘记Python (C ++,Fortran,Logo,Awk等等)并考虑您要解决的问题。尝试在纸上写一些伪代码。
从您的伪代码中,Python应该变得更加明显,并且任何技术的困难都可以作为StackOverflow上的更具体的问题(例如)或者向您的同事询问。
答案 1 :(得分:1)
我建议你迭代你的对象,并记住Lin
或Ptp
类型的最后一次出现(无论那些......:)):
lastOccurrence = None
for obj in objects:
if obj.type not in ('PtP', 'Lin'):
continue
if obj.type == 'Lin':
if lastOccurrence is not None:
obj.value = lastOccurrence.value
else:
obj.value = "0"
lastOccurrence = obj
或类似的......
答案 2 :(得分:0)
我会使用名为finite-state machine或FSM的内容来浏览API对象。当您遇到不同类型和相关属性时,您可以存储有关FSM“状态”中所见内容的信息,该状态还确定在下一个“事件”(您正在迭代的项目)发生或遇到时会发生什么。收集的信息可以根据需要输出(即达到某种状态时。
FSM是一个相当简单的概念,精益和编程(几乎所有语言),对这类问题非常有用。