列表理解:通过在单个列表中添加多个值来创建新列表

时间:2018-09-15 15:53:58

标签: python list list-comprehension

给出一个包含每月数字数据的列表,我如何轻松地将其转换为季度数据?

function tableAdd() {
   var table = document.getElementById("table");
   var titel = document.getElementById("Titel").value;
   var description = document.getElementById("Description").value; 
   var row = table.insertRow(); 
   var projectCell=row.insertCell(0);
   projectCell.innerHTML = titel;
   var newRow =row.insertCell(1);
   var input = document.createElement("input");
   input.type = "text";
   input.value= description
   newRow.appendChild(input);
 }
 tableAdd();

所需的输出:

<body>
<input type="text" id="Titel" value="test"/>
<input type="text" id="Description" value="test"/>
<table id="table">
</table>
<button onclick="tableAdd()">add</button>
</body>

我想做类似x= [5,8,3,4,5,6,1,2,5,3,11,8] #monthly data for Jan-Dec 的事情,但是x表示x不可迭代。

我不认为这是重复的。我专门在寻找列表理解解决方案。

2 个答案:

答案 0 :(得分:1)

列表理解方式:

[sum([x[i],x[i+1],x[i+2]]) for i in range(0,len(x),3)]
#[16, 15, 8, 22]

或者以一种更好的方式(感谢@JonClements):

[sum(x[i:i+3]) for i in range(0, len(x), 3)]

和一种numpy方式:

import numpy as np

np.sum(np.array(x).reshape(-1,3),axis=1)
#array([16, 15,  8, 22])

答案 1 :(得分:0)

不要发疯,您可以将它们切成薄片然后与每个小组一起工作

x= [5,8,3,4,5,6,1,2,5,3,11,8]

a, b, c, d = x[:3], x[3:6], x[6:9], x[9:12]

print(a, b, c, d)
(xenial)vash@localhost:~/python/stack_overflow$ python3.7 slice_q.py 
[5, 8, 3] [4, 5, 6] [1, 2, 5] [3, 11, 8]

从这里开始,如果您想对每个组求和,可以执行以下操作

lista = [a, b, c, d,]

for i in lista:
    print(sum(i))
16
15
8
22