簡體   English   中英

通過這個怪異的操作在python中獲得更小的列表?

[英]Getting smaller list through this weird operation in python?

我有list1和一個稱為n的因子。 現在,我執行此奇怪的操作以基於因子n (> 1)從list1返回list2 這是一個例子:

list1=[1,2,3,4,5,6,7,8,9,10]
n=2
list2=[3,7,11,15,19]

請注意list2是通過將相鄰數字求和而獲得的。另一個示例是:

list1=[1,2,3,4,5,6,7,8,9,10]
n=2.5
list2=[4.5,10.5,17,23]

在這種情況下: n = 2.5。 因此, list2的第一個元素= list1[0]+list1[1]+0.5*list1[2] ,第二個元素是0.5*list1[2]+list1[3]+list1[4] ,依此類推。 len(list2)=ceil(len(list1)/n)

我可以通過遞歸應用以下我編寫的函數來實現n = 2、4、8等。

def (list1,n):
list2len=ceil(len(list1)/n)
      tmparr=np.empty(list2len,dtype=float)
      for i in range(0, list2len) :
         j=2*i
         tmparr[i]=Filter[j]+Filter[j+1]
      list2=np.empty(list2len,dtype=float)
      np.copyto(list2,tmparr)

但是,我不確定如何在python中為n〜= 2 ^ m編寫代碼。 有什么幫助嗎?

這是一種方法:

list1=[1,2,3,4,5,6,7,8,9,10]
n = 2.5

list2 = []
s = 0
f = n
for x in list1:
    s += x*min(f, 1.)
    f -= 1
    if f <= 0:
        list2.append(s)
        s = x*-f
        f += n
print list2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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