【问题标题】:Iterate through array in jumps在跳跃中遍历数组
【发布时间】:2020-03-26 15:54:59
【问题描述】:

我有一个数组,我只需要 value[1],value[4],value[7],value[10],value[13]value[16] (所以基本上在跳过 value[0] 之后的每三个值)。

我需要对这些值中的每一个做一个方程式,并将每个答案返回到一个数组中。然而,我编写的函数不是跳跃 3 而是使用每个值。我该如何解决这个问题?

popt=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18] #I only want to use popt[1],popt[4],popt[7] etc. 

def d(popt):
  dvalues=[]
  i=1
  for i in range(0, len(popt)//3):
      d=wavelength()/(2 * math.sin(math.radians(popt[i] / 2)))
      dvalues.append(d)
      I+=3
  return(dvalues)
print(d(popt))

【问题讨论】:

  • 看看像 popt3 = popt[::3] 这样的东西来使用列表中的每三个项目。

标签: python arrays loops


【解决方案1】:

你需要:

for i in range(1, len(popt), 3):

【讨论】:

    【解决方案2】:

    这是另一种使用方法:

    示例代码:

    import math
    
    def d(popt):
        # I don't have your `wavelength()` function, so have used 1. 
        vals = [1 / (2 * math.sin(math.radians(i / 2))) for i in popt]
        return vals
    
    # Create a list of every 3 numbers from 1-18. 
    popt = [i for i in range(1, 18)][::3]
    output = d(popt)
    

    输出:

    # Using 1, rather than your wavelength() function.
    [57.296506740065155,
     14.326854173921912,
     8.19020411969913,
     5.736856622834928,
     4.416835735998784,
     3.5926482671638595]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多