首页 > 解决方案 > 计算python范围之间列表中的浮点数

问题描述

我已经被困在这个任务上一段时间了。使用下面的代码,我设法生成了 1500 个坐标,这些坐标给了我一个介于 0 和 2 (x,y) 之间的浮点数。

coordinates = [(random.random()*2.0, random.random()*2.0) for _ in range(15000)]
print(coordinates)

但是现在我需要创建一个计数器来计算 0 到 1 之间的浮点数并将其输出给用户。我试过使用 If 语句和 while 循环。我还在互联网上进行了窥探,但找不到任何有用的东西。有谁知道如何解决这个问题?

亲切的问候。

标签: pythonpython-3.x

解决方案


您可以在元组上使用简单的条件sum()并总结1 if xor/and yare small then 1

import random

# your code used 15k tuples, your text says 1.5k - adapt the number to your liking
coordinates = [(random.random()*2.0, random.random()*2.0) for _ in range(1500)]

one_lower_1  = sum(1 for x,y in coordinates if x < 1 or  y < 1)
both_lower_1 = sum(1 for x,y in coordinates if x < 1 and y < 1)
x_lower_1    = sum(1 for x,_ in coordinates if x < 1)
y_lower_1    = sum(1 for _,y in coordinates if y < 1)

print(one_lower_1)
print(both_lower_1)
print(x_lower_1)
print(y_lower_1)

输出

1134
383
745
772

这本质上是一个生成器表达式,它只过滤掉那些与if ....您生成的部分之后的部分匹配的对coordinates


我选择这种sum(1 ... )方法是因为这样你就不必创建一个列表来获取它len() ......如果你只需要元素的数量然后产生所有元素,那么它对内存更友好。


jpp评论的替代方式:

sum(x < 1 or  y < 1 for x,y in coordinates)

这是有效的,因为超过 10 的总和True为 10 - 每个True 计为 1

print(sum(True for _ in range(10))) # 10

推荐阅读