更多Pythonic方式遍历范围

时间:2020-10-30 00:00:20

标签: python range

一个朋友要我让她的编码更加“ pythonic”,但我本人还是很陌生。这是我想出的,我有点担心它不会达到所有数字(6、7、8、9、10和11)。我也知道有更好的方法,但是我只是不知道它是什么。你能帮忙吗?

prob = 0
for r in range(6,11):
    prob += binom.pmf(k=r, n=11, p=0.2)
print(‘The probability is {}’,format(prob))

2 个答案:

答案 0 :(得分:0)

使用列表理解:

def binom(n,r,p):
  # dummy function
  return n+r+p

prob = sum([binom(r,12, 0.2) for r in range(6,11)])
print(f"The probability is {prob}")

编辑: 要使11包含在内,请将范围增加到12

修改2: 根据{{​​3}}的建议,如果只需要计算总和,则可以删除方括号,如下所示:

prob = sum(binom(r,12, 0.2) for r in range(6,11))

答案 1 :(得分:0)

我认为您的代码完全是pythonic,因为这是值得的

通过列表理解,sum()函数和f字符串,可以使其更紧凑,更高效。另外,我考虑到您希望将11包括在内,因此您的范围应从6到12。

probs = [binom.pmf(k=r, n=11, p=0.2) for r in range(6, 12)]
print(f'The probability is {sum(probs)}')