簡體   English   中英

在列表中找到2個連續元素的期望

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM