gpt4 book ai didi

python - 计算python中一个范围之间的列表中的 float

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:12 27 4
gpt4 key购买 nike

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

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

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

亲切的问候。

最佳答案

您可以使用简单的条件 sum()如果 x 或/和 y 小于 1,则对你的元组求和 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 .... 之后的部分匹配的那些对

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


来自 jpp's 的替代方式评论:

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

这是可行的,因为超过 10 个 True 的总和给出 10 - 每个 True counting as 1 :

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

关于python - 计算python中一个范围之间的列表中的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53354679/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com