你可以使用一个简单的条件
sum()
在你的元组上加起来
一
如果
x
或/和
y
比那小
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'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