使用浮点值迭代列表,然后打印相同的列表

时间:2016-05-12 09:38:02

标签: python

我有一个带有浮点值的列表float_list = [0.2, 1.2, 1.5, 0.7, 0.9]

首先我在迭代 float_list 的值然后乘以这些值形成 2 ,在最后我要打印结果在列表中,所需结果必须为此[0.4, 2.4, 3.0, 1.4, 1.8]

但我得到的是 TypeError: 'float' object is not iterable 这是我的代码

我的代码

float_list = [0.2, 1.2, 1.5, 0.7, 0.9]
for i in float_list:
    print([list_num*2 for list_num in i])

期望的结果

[0.4, 2.4, 3.0, 1.4, 1.8]

错误

Traceback (most recent call last):
  File "F:/python-practise/for.py", line 3, in <module>
    print([list_num*2 for list_num in i])
TypeError: 'float' object is not iterable

注意:我还尝试将 i 作为字符串 str(i) print([list_num*2 for list_num in str(i)])但是在做所以我在我的控制台中得到了这个输出

['00', '..', '22']
['11', '..', '22']
['11', '..', '55']
['00', '..', '77']
['00', '..', '99']

现在我被困住请帮助我获得理想的结果。

7 个答案:

答案 0 :(得分:1)

您正在混合循环和列表推导。在循环中,i已经是列表中的单个元素,即数字。您应该 只使用循环...

float_list = [0.2, 1.2, 1.5, 0.7, 0.9]
for i in float_list:
    print(i * 2)

... 列表理解:

print([i * 2 for i in float_list])

答案 1 :(得分:0)

for i in float_list:
    print([list_num*2 for list_num in i])

我将成为一个浮点数,因为浮点数在列表中。所以你不能迭代浮点数,因为它不是一个列表。所以“对于我的list_num会失败。

这样做:

float_list = [0.2, 1.2, 1.5, 0.7, 0.9]

print([list_num*2 for list_num in float_list])

答案 2 :(得分:0)

如果您有一个简单的列表(不是列表列表),您可以使用循环或列表推导,但不能同时使用。

删除

for i in float_list:

你很好。

答案 3 :(得分:0)

请注意,您有两个for循环。你只需要一个。

>>> float_list = [0.2, 1.2, 1.5, 0.7, 0.9]
>>> new_list = [list_num*2 for list_num in float_list]
>>> print(new_list)
[0.4, 2.4, 3.0, 1.4, 1.8]

我建议您在打印时解压缩它:

>>> print(*new_list)
0.4 2.4 3.0 1.4 1.8

答案 4 :(得分:0)

内部列表理解导致错误,因为您在单个float项目上应用for循环,即您无法迭代float object =&gt;这是错误指示的内容。

解决方案:

使用列表理解:

>>> float_list
[0.2, 1.2, 1.5, 0.7, 0.9]
>>> print([list_num*2 for list_num in float_list])
[0.4, 2.4, 3.0, 1.4, 1.8]

或像这样的循环

>>> new_list=[]
>>> for i in float_list:
...     new_list+=[i*2]
... 
>>> new_list
[0.4, 2.4, 3.0, 1.4, 1.8]
>>> 

我建议使用map()将函数映射到列表的每个元素:

>>> float_list
[0.2, 1.2, 1.5, 0.7, 0.9]
>>> list(map(lambda x:x*2, float_list))
[0.4, 2.4, 3.0, 1.4, 1.8]
>>> 

答案 5 :(得分:0)

我认为这会解决它

System.getProperty("user.name");

result = [2*i for i in float_list]
print(result)

希望它有所帮助。快乐编码:)

答案 6 :(得分:0)

我会分两步处理这个任务:

# Declare the variables
float_list = [ ] # your present array
float_double_array = [ ] # your to be new array
  1. 迭代当前列表 - 如下所示float_list,然后乘以2,然后将结果追加到float_double_array

    for index_item in float_list:
        double_item=index_item * 2
        float_double_array.append(double_item)
    
  2. 现在您可以使用新的float_double_array及其索引值,如下所示。

    for double_floats in float_double_array:
        try:
            print " ".join(double_floats) #handles python 2
        except:
            print (" ".join(double_floats)) #handles python 3
    
  3. 最后,有任何问题,请询问。