【问题标题】:list indices must be integers or slices, not float列表索引必须是整数或切片,而不是浮点数
【发布时间】:2016-06-23 19:22:17
【问题描述】:

我有一个列表 sortedInfected,它由整数组成,长度未知。

当我运行此脚本时,我收到错误:“列表索引必须是整数或切片,而不是浮点数”。

我该如何解决这个问题?

medianList =[]
b = (len(sortedInfected) / 2)

if len(sortedInfected) % 2 == 0:

    median = (sortedInfected[b] + sortedInfected[b-1]) // 2
    medianList.append(median)
else:

    median = sortedInfected[b - 0.5]
    medianList.append(median)

【问题讨论】:

  • 如果使用 Python 3,请使用 // 强制整数除法。但是你也从b 中减去0.5。你期望这会做什么?如果b8,并从中减去0.5,则剩下7.5。您希望如何将其用作列表索引?
  • 列表索引必须是整数。您需要决定如何处理当前给出非整数索引的情况。
  • 我的想法是,当长度为奇数时,我只从 b 中减去 0.5。这就是为什么我把它放在“其他”下。因此,如果 len 为 9,b 将为 9/2 - 0.5。但这没有用。但它似乎适用于 Cory 的脚本,所以一切都很好:)

标签: python integer divmod


【解决方案1】:

在 Python 3.x 中,/ 运算符执行浮点除法。如果你想要int 除法,请使用//

b = len(sortedInfected) // 2

因此您可以将代码更改为

medianList =[]
b = (len(sortedInfected) // 2)

if len(sortedInfected) % 2 == 0:    
    median = (sortedInfected[b] + sortedInfected[b-1]) // 2
    medianList.append(median)
else:    
    median = sortedInfected[b]
    medianList.append(median)

【讨论】:

  • 只有当 len(sortedInfected) 是偶数时才有效。我怎样才能让它与奇数一起工作?
猜你喜欢
  • 2019-03-03
  • 2020-01-15
  • 1970-01-01
  • 2021-07-19
  • 2017-06-08
  • 2016-05-25
  • 2016-09-16
  • 2017-10-01
相关资源
最近更新 更多