嵌套循环输出重复的数字

2024-10-01 15:40:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码,其中每个烛台进入一个for循环,它测试它是否达到某个支持级别,容差为5%,问题是我有重复的输出。为什么

for i in range(0, len(df['Close'])):

  for j in range (len(ssupport)) : 

    if (ssupport[j] * .98) <= df['Low'][i-1] <= (ssupport[j] * 1.02 ) :
        if df['Low'][i] >= df['High'][i-1] :

            stest.append (df['High'][i])

            if (j+1 < len(ssupport)) :
                nexts.append (ssupport[j+1])
            else:   
                nexts.append (ssupport[j])  
print (stest)

输出:

[109.792, 109.792, 109.792, 109.792, 109.792, 109.792, 112.019997, 112.019997, 112.019997, 112.019997, 109.920998, 109.920998, 109.920998, 109.920998, 109.920998, 109.920998, 108.723, 108.723, 108.723, 108.723, 108.723, 108.723, 108.528, 108.528, 108.528, 108.528, 108.528, 108.528, 108.528, 107.193001, 107.193001, 107.193001, 107.496002, 107.496002, 107.496002, 107.496002, 107.496002, 107.847, 107.847, 107.847, 107.847, 107.847, 107.847, 109.190002, 109.190002, 109.190002, 109.190002, 109.190002, 109.190002]

Tags: 代码indfforlenifrange级别
1条回答
网友
1楼 · 发布于 2024-10-01 15:40:06

因为我不得不猜测这里的问题是一种可能的解释

这就是嵌套for循环的工作方式。在这个简单的例子中,所有的i都会连续打印多次,并且j也会在一段时间后重复

for i in range(0, 5):
    for j in range(10, 15):
        print(str(i) + " " + str(j))

输出:

10 0
11 0
12 0
13 0
14 0
10 1
11 1
12 1
13 1
14 1
10 2
11 2
12 2
13 2
14 2
10 3
11 3
12 3
13 3
14 3
10 4
11 4
12 4
13 4
14 4

可能的解决办法:

  1. 仅当项目不在列表中时才添加该项目
  2. 使用一个set而不是一个列表(实现了1.将要做的事情,但没有任何额外的代码)
  3. 添加项目后,中断内部循环
  4. 调整你的if语句

相关问题 更多 >

    热门问题