如果我在这里遗漏了一些简单的事情,我很抱歉,但我不明白......
list_rho = []
# start some sort of loop
val = input()
list_rho.extend(val)
使用此代码,我试图创建一个rho值列表:用户输入一个浮点数。然后将其添加到列表中。
例如用户输入值0.10, 0.15, 0.20, 0.30, 0.35
但是,当我打印列表时,它显示如下:
0, ., 1, 0, 0, ., 1, 5, 0, ., 2, 0, 0, ., 2, 5, 0, ., 3, 0, 0, ., 3, 5
显然,不是我想要的。如果我尝试将输入值括在引号中或者首先将用户输入转换为字符串,则会发生同样的情况。
有人可以解释这是怎么回事?
N.B。我可以使用一个循环来表示rho的值,但是,在我的最终用途中,小数位数很重要,我知道在基数2中没有精确表示0.1的方法......
答案 0 :(得分:3)
如果你想保留字符串,你可以这样做:
list_rho.extend(val.split(", "))
或者,要转换为浮点数:
list_rho.extend(map(float, val.split(", ")))
input
总是为您提供一个字符串,并list.extend
对其参数进行迭代,分别添加每个项目,因此list.extend("foo")
相当于list.extend(['f', 'o', 'o'])
:
>>> l = []
>>> l.extend("hello, world")
>>> l
['h', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd']
>>> l = []
>>> l.extend("hello, world".split(", ")) # right
>>> l
['hello', 'world']
答案 1 :(得分:0)
input()
返回一个字符串。
list_rho.extend
期待一个列表。
"0, ., 1, 0, 0, ., 1, 5, 0, ., 2, 0, 0, ., 2, 5, 0, ., 3, 0, 0, ., 3, 5"
是强制转换为列表的输入字符串。
>>> m = "0.10, 0.15, 0.20, 0.30, 0.35"
>>> m
'0.10, 0.15, 0.20, 0.30, 0.35'
>>> n = list(m)
>>> n
['0', '.', '1', '0', ',', ' ', '0', '.', '1', '5', ',', ' ', '0', '.', '2', '0', ',', ' ', '0', '.', '3', '0', ',', ' ', '0', '.', '3', '5']
>>> g = []
>>> g.extend(m)
>>> g
['0', '.', '1', '0', ',', ' ', '0', '.', '1', '5', ',', ' ', '0', '.', '2', '0', ',', ' ', '0', '.', '3', '0', ',', ' ', '0', '.', '3', '5']