繁体   English   中英

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

[英]Iterate the list with float value and then print the same list

我有一个带有float值的列表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] 0.4,2.4,3.0,1.4,1.8 [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)]) str(i)中 print([list_num*2 for list_num in str(i)])但是这样做是在控制台中得到的

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

现在我只是被卡住了,请帮助我获得期望的结果。

您正在混合循环和列表推导。 在您的循环中, 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])
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])

如果您有一个简单列表(不是列表列表),则可以使用循环或列表理解,但不能同时使用两者。

只需删除

for i in float_list:

而且你很好。

请注意,您有两个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

内部列表理解会导致错误,因为您在单个float项上应用了for循环,即您无法在float对象上进行迭代=>这就是错误所指示的内容。

解:

使用列表理解:

>>> 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]
>>> 

我认为这会解决

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

要么

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

希望能帮助到你。 快乐编码:)

我将分两个步骤处理任务:

# 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 

最后,如有任何疑问,请询问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM