[英]Finding the expectation of 2 consecutive elements in a list
我有
mylist = [a, b, c, d]
我想得到:
[p*a+(1-p)*b, p*b+(1-p)*c, p*c+(1-p)*d]
現在我正在做的是:
somelist = []
for i in range(len(mylist)):
if i+1<len(mylist):
expectedVal = (1-p)*mylist[i]+p*mylist[i+1]
somelist.append(expectedVal)
循環進行最后一次迭代時,有沒有更聰明的方法來避免出現“索引不足”異常?
您可以使用zip,它將在最短的列表處停止:
for v1, v2 in zip(mylist, mylist[1:]):
somelist.append((1-p)*v1+p*v2)
您可以將其轉換為列表理解:
somelist = [(1-p)*v1 + p*v2 for v1, v2 in zip(mylist, mylist[1:])]
在我看來,對您的代碼最簡單的修改就是將其迭代次數減少到小於mylist
的長度:
for i in range(len(mylist)-1):
expectedVal = (1-p)*mylist[i]+p*mylist[i+1]
somelist.append(expectedVal)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.