![](/img/trans.png)
[英]How to add each list entry as an entry to a json file in Python?
[英]How to add every nth entry in a python list to each other?
假設我有一個python列表:
[4,5,25,60,19,2]
如何將第n個條目彼此添加?
例如,我將列表分為3個條目[4,5 / 25,60 / 19,2],然后添加這些條目以獲取新列表:
[4+25+19, 5+60+2]
這給了我總和:
[48, 67]
對於更復雜的示例,假設我的列表中有2000個條目。 我想將第100個條目添加到之前的條目中,因此在新列表中可以獲得100個條目。 現在,每個條目將是第100個條目的總和。
反復提取您的切片並將其匯總。
>>> [sum(l[i::2]) for i in range(len(l) // 3)]
[48, 67]
您可能需要做更多的工作來處理極端情況,但這對您來說是個不錯的開始。
該itertools
文檔有一個叫做配方功能grouper
,你可以從導入more_itertools
(需要手動安裝)或復制粘貼。
它是這樣的:
>>> from more_itertools import grouper
>>> l = [4,5,25,60,19,2]
>>> list(grouper(2, l)) # 2 = len(l)/3
>>> [(4, 5), (25, 60), (19, 2)]
你可以轉的輸出grouper
有zip
和應用sum
每個組。
>>> [sum(g) for g in zip(*grouper(2, l))]
>>> [48, 67]
我更喜歡手動擺弄索引。 此外,它還適用於所有可迭代的對象,而不僅僅是列表。 通用迭代器可能不支持索引或切片,但始終能夠生成值流。
使用從此處獲取的chunks
函數,您可以編寫以下內容:
def chunks(l, n):
"""Yield successive n-sized chunks from l."""
for i in range(0, len(l), n):
yield l[i:i + n]
l = [4,5,25,60,19,2]
print([sum(e) for e in list(chunks(l, 2))])
您可能會使用一系列聰明的列表操作,但我想不到。 因此,相反,我只是做了一個從0到n-1的解析器,並且在列表的范圍內添加了元素,每n行一次。 因此,如果n = 3,則取0、3、6等;否則,取0。 然后1、4、7等-並將其放入輸出列表。
該代碼附在下面。 希望能幫助到你。
list1 = [7, 6, -5.4, 6, -4, 55, -21, 45, 67, -9, -8, -7, 8, 9, 11, 110, -0.8, -9.8, 1.1]
n = 5
list2 = []
sum_elem = 0
for i in range(n):
sum_elem = 0
j = i
while j < len( list1 ):
sum_elem += list1[j]
j += n
list2.append(sum_elem)
print( list2 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.