我是Python的新手,所以如果一些单词/动作非常愚蠢我很抱歉..
所以,我的任务是比较一个列表中的元素。 如果元素1大于元素2,我想标记这个并继续比较元素1的其他元素(?Element1> Element3)......
此时我正在使用我的进程创建一个简单的类:
processList = []
class Process:
def __init__(self, id, recvMsg):
self.id = id
self.recvMsg = recvMsg
现在我正在生成列表中的进程..:
def CreateProcess():
processList.append(Process(0,"NULL"))
processList.append(Process(2,"NULL"))
processList.append(Process(4,"NULL"))
processList.append(Process(7,"NULL"))
processList.append(Process(10,"NULL"))
在最后一步,我想比较每个元素的ID,如果另一个元素大于元素1,我想将他的recvMsg更改为“Bigger”
在这一点上,我不知道它应该如何正确发生..所以现在它是一种pseude代码..
for (j = 1; j < len(processList); j++)
if processList[0].id < processList[j].id
processList[j].recvMsg = "IsBigger"
答案 0 :(得分:0)
for
循环您使用的for
循环看起来像是某种Java / JS / C程序员。用于循环:
for j in range(1, len(processlist)):
if processList[0].id < processList[j].id:
processList[j].recvMsg = "IsBigger"
你可以这样做。 range(x, y)
是一个生成器,迭代后将遍历从x
开始到y
之前结束的所有整数(所以list(range(1, 5))
为[1, 2, 3, 4]
)
答案 1 :(得分:0)
您可以使用reduce
。它是Python 2中内置的,但您需要从Python 3中的functools
导入它(即from functools import reduce
)。
def compare(a, b):
if a.id < b.id:
b.msg = 'IsBigger'
return a
reduce(compare, processList)
然后您可以检查:
>>> for proc in processList:
... print((proc.id, proc.msg))
...
(0, 'NULL')
(2, 'bigger')
(4, 'bigger')
(7, 'bigger')
(10, 'bigger')