【问题标题】:Does Python list supports float? When is integer needed that float cannot do?Python 列表是否支持浮点数?什么时候需要浮点数不能做的整数?
【发布时间】:2019-08-07 02:26:24
【问题描述】:

我的分配代码可以很好地处理整数,但我意识到它不能接受小数,并且价格的货币值有小数。以为我可以轻松地将所有 int 输入更改为 float 输入,我收到了此错误消息。 TypeError:列表索引必须是整数或切片,而不是浮点数

代码sn-p例如:

electronics = [
["Sony cam","camera",199],["MS mouse","computer",299],
["ABC speakers","speaker",399]]
editinput = input("Select a product to edit. \n")

#somehow this cannot be float
editindex = float(editinput)-1
editprice = input("Price SGD $: \t")

# Changing editing an item in a nested list
electronics[editindex][2] = float(editprice)

问题:

  1. 是否意味着Python列表项“索引”只能是整数 (0,1,2)?
  2. 这是否也意味着没有什么是 int 的常见论点 可以做到浮动不能做到,不再是真的,因为列表追加, 而 edit 正是需要 int 而 float 不能的地方。

参考:文章编号:20452189 - “为什么我应该使用整数而不是浮点数?”

【问题讨论】:

  • 谈论列表中的第 2.59 项有意义吗?要将浮点数映射到其他对象,您可以使用字典。
  • 1a。是的,它们只能是整数(正数)。 1b。根据您的需要,浮点数和整数有不同的用途。具体计算通常会使用浮点数或双精度数。其他任何 int
  • 我不明白,你想用(例如)电子[5.5][2] 来实现什么,你想访问列表中的哪个元素?一个列表只包含东西。而那些东西是可以计算的。像 1,2,3。列表中的 3.5 项对您来说意味着什么?另外,回答你的问题。 Python 列表确实支持浮点数。您可以将浮点数添加到列表中:[1.1, 2.3, 5.5] 等。
  • editindex 在[..,] 中使用是一个索引,一个列表中的位置。它必须是一个整数。该位置的项目可以是任何东西 - 数字、字符串、另一个列表等。您似乎混淆了值和索引。

标签: python python-3.x


【解决方案1】:

列表索引必须是从 0 到 n-1 的整数,其中 n 是列表的长度。它还允许范围内的负索引以反向访问元素。

List 恰好存储 n 个项目,我们只需要这些整数范围来访问存储的数据。

如果你得到 1.0,你总是可以使用 int() 将它转换为一个 int,但如果你最终得到一个浮点数,你应该问一个问题,为什么你最终会得到一个浮点数来访问数据。从某种意义上说,编程不仅仅是数学,我们想做一些阻止错误的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    相关资源
    最近更新 更多