下面是一个列表abc.In公司在第一个循环中,我检查前面的元素是否大于第一个元素(start\u equity)。如果是,我重新分配当前元素=start\u equity,并根据当前元素的索引进行检查。问题是第二个循环。在第二个循环中,我想比较索引的值和前面元素的最大值,如果满足条件,则应该将score附加到scorelist。请谁来帮我一下。我对python了解最少。你知道吗
abc= [150,110,120,0,0,160,120,-200,140,150]
count= 0
Look = 0
score = 0
scorelist=[]
startequity = abc[0]
for (index, item) in list(enumerate(abc)):
if abc[index] < startequity:
startequity = abc[index]
Look = Look + 1
scorelist = scorelist + [0]
if abc[index] > max(abc[Look:index]):
count = count + 1
score = score + count
scorelist.append((score))
期望的答案是scorelist=[0,0,1,0,1,2,0,0,1,2]
干得好,你开始尝试,勇敢地寻求帮助。让我们看看这里。。。你知道吗
看,还没有定义。你知道吗
max();必须至少有一个元素,否则会引发异常,使Python崩溃。有这样一条线就行了:
我在那个街区写了一个“继续”。Continue告诉Python忘掉循环中的所有其他内容,继续for循环中的下一个循环。你知道吗
值得注意的是,以下3行都在列表的末尾添加了一个元素,但是在整个代码中使用相同的符号是一个很好的惯例:
最终代码(编辑版本):
这将返回问题中提出的[0,0,1,0,1,2,0,0,1,2]。你知道吗
我还是不完全清楚你想做什么。但是我猜输出应该是这样的:如果
abc
中的前一个元素更大或不存在,那么赋值0,否则将数字增加1。你知道吗至少,这段代码是这样做的:
说明:
[[1, 0][u - v < 0] for u, v in zip(abc[1:], abc[:-1])]
是一个列表理解,它根据与上一个元素的比较来分配0
或1
。这不包括第一个元素,其得分设置为0
。 然后for loop
忽略0
并用1,2,3...
替换像1,1,1...
这样的序列相关问题 更多 >
编程相关推荐