【问题标题】:Copying specific values from one list to another, type conversion将特定值从一个列表复制到另一个列表,类型转换
【发布时间】:2022-01-01 18:09:00
【问题描述】:

我有一个列表x 的值:

[0.09086322  -0.66400483  -0.85750224, ... 73.92927078, 5.18024081, -17.12200886]

在这里,我想将列表 x 中范围 (-50, 50) 中的值复制到另一个列表 y

我已经尝试实现以下代码,但它似乎不起作用

y = []
for i in x:
    if x[i] >= -50 and x[i] <=50:
    y.append(x[i])

我收到以下错误:

only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and
integer or boolean arrays are valid indices

【问题讨论】:

  • 你说list,但是错误提示你使用的是numpy数组。如果是这种情况,并且您想要一个 numpy 数组作为结果,您可以使用y = x[(x &gt;= -50) &amp; (x &lt;= 50)]。这就是为什么发布显示错误的 working 脚本很重要的原因之一。它回答了有关错误是如何真正产生的问题。

标签: python numpy type-conversion


【解决方案1】:

如果要迭代列表索引,请使用i 而不是x[i],请使用for i in range(x):

【讨论】:

    【解决方案2】:

    您直接使用 x 列表中的浮点值作为索引,但 x[0.09086322] 是无效的列表访问。您应该直接使用这些值。

    您可以使用列表推导而不是 for 循环,我认为它更容易理解:

    >>> x = [-50.1, -50.2, 0.1, 0.2, 0.3, 50.1, 50.2]
    >>> y = [v for v in x if v >= -50 and v <= 50]
    >>> y
    [0.1, 0.2, 0.3]
    

    【讨论】:

      【解决方案3】:

      没有必要写x[i],因为你已经在for循环中定义了x(你想要循环的结构)。试试:

      y = []
      for i in x:
          if i >= -50 and i <=50:
              y.append(i)
      

      【讨论】:

        【解决方案4】:

        当您运行for i in x: 时,i 是列表中的每个元素而不是索引。您可以通过运行以下命令来检查:

        for i in x:
            print(i)
        

        输出:

        0.09086322
        -0.66400483
        -0.85750224
        73.92927078
        5.18024081
        -17.12200886
        

        因此,当您拨打x[i] 时,您正在尝试拨打x[0.09086322],这是不可能的。有两种方法可以修复此代码,第一种是将x[i] 替换为i

        y = []
        for i in x:
            if i >= -50 and i <=50:
                y.append(i)
        

        或者像下面这样循环遍历 x 的索引:

        y = []
        for i in range(len(x)):
            if x[i] >= -50 and x[i] <=50:
            y.append(x[i])
        

        【讨论】:

          【解决方案5】:
          x = [0.09086322,-0.66400483,-0.85750224,73.92927078,55.18024081,-17.12200886]
          y = []
          for i in range(len(x)):
              if x[i]>= -50.0 and x[i] <=50.0:
                  y.append(x[i])
          print(y)
          

          【讨论】:

            猜你喜欢
            • 2012-01-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-07-21
            • 1970-01-01
            • 1970-01-01
            • 2012-08-12
            • 2010-10-05
            相关资源
            最近更新 更多