我是Python的初学者,正在自学列表推导式。我已经成功地将几乎所有的for循环代码翻译成了列表推导式,但是对于我认为非常简单的循环却卡住了。
n = 10000
def sim(y):
count = 0
for i in range(10000):
if 0.9 <= y[i] <= 1.8:
count += 1
probability = count/10000.0
print("P(a < x <= b) : {0:8.4f}".format(probability))
print ("\t case: \n"),sim([0.25 if random() < 0.8 else 1.5 for r in range(n)])
到目前为止,我一直在尝试以下变量,但是出现了与使用列表相关的错误,例如“'int' object is unsubscriptable”和“unsupported operand type(s) for +: 'int' and 'list'”。
def sim(y):
c4 = sum([y for range(y) in range(len(y)) if 0.9 < y[i] <= 1.8])/10000
print("P(a < x <= b) : {0:8.4f}".format(c4))
该函数的目的是基本上接受传递给sim()的参数,并在仅针对在0.9和1.8之间满足条件的值的情况下,迭代其长度并按1递增。我在尝试检查每个n随机数是否符合此条件,然后只求和那些为true的数字。
顺便说一下,答案应该大约为0.2 -- 如果您想检查它,只需考虑1.5是符合0.9和1.8之间的唯一方法。
感谢您的耐心等待,因为我正在学习。
i
不是一个指向y
的索引,而是来自y
的值。代码循环遍历y
本身,而不是range()
。 - Martijn Pieters