python - 计算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 循环。我还在互联网上进行了窥探,但找不到任何有用的东西。有谁知道如何解决这个问题?
亲切的问候。
解决方案
您可以在元组上使用简单的条件sum()
并总结1 if x
or/and y
are 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
推荐阅读
- mysql - Mysql在单表中选择查询以及在其他行中的条件
- webpack - 将 webpack 2 迁移到 4
- eclipse - eclipse ide内容辅助java脚本
- node.js - 离子服务在“node_modules/@angular/core/src/render3/definition.d.ts”处有打字稿错误
- elasticsearch - 在 elasticsearch 上排序未按预期工作
- jquery - 在显示 html 内容时跳过 div 部分
- node.js - Azure 函数 TypeScript 装饰器
- java - JPQL 会话 bean 导致的 java.lang.ClassCastException
- android - 在 Android 应用程序上创建数据库
- python - pandas - 从所有可能的列组合中创建一个 df