问题描述
我有一个浮点列表,我想将其转换为包含 1 或 0 的列表,具体取决于它们是否大于某个值。
示例:
list=[0.4,0.6,0.7,0.3,0.2,0.8]
value=0.5
对于列表中的每个项目,我想将大于 0.5 的值更改为 1,将小于该值的值更改为 0。
我已经尝试过这个,但一直得到一个 nonetype 对象,我将无法在以后的计算中使用它。
def fun1(list,value):
for i in list:
if i > value
print(int(1))
if i < value
print(int(0))
我在列表中得到了正确的数字 [0,1,1];但是,它说类型是无。我希望它们是列表中的整数值,以便以后可以使用它们进行计算。我可能做错了什么?有什么建议吗?
解决方法
这可以使用 list comprehension 轻松完成。我强烈建议阅读并熟悉这个 Pythonic 约定。
例如:
output = [1 if i >= 0.5 else 0 for i in mylist]
输出:
[0,1,1]
,
这是我想出的:
my_list = [0.2,23.2,0.5,0.4,1.2,.23,]
def my_function(in_list):
out_list = []
for number in in_list:
if number <= 0.5:
out_list.append(0)
continue
out_list.append(1)
return out_list
print(my_function(my_list)) # returns [0,0]
代码分解:
out_list = []
我们需要将 out_list 初始化为一个数组,以便我们以后可以在其上使用 append()
。
if number <= 0.5:
out_list.append(0)
continue
这将取任何小于或等于零的值,并将其添加到列表中。然后我们使用 continue
让它回到 for
循环的开始。
注意:这也可以不用 continue
而是用 else
或 elif
来完成,这只是我为这个答案选择的方法。
out_list.append(1)
仅当数字大于 0.5 时才会调用此方法。它将 out_list
def greater_than(values,target):
result = []
for value in values:
result.append(int(value > target))
return result
values = [0.4,0.6,0.7,0.3,0.2,0.8]
result = greater_than(values,0.5)
或者,作为列表推导式:
values = [0.4,0.8]
result = [int(value > 0.5) for value in values]