首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编辑列表中每个第N项的值

编辑列表中每个第N项的值
EN

Stack Overflow用户
提问于 2016-03-15 12:32:52
回答 7查看 5K关注 0票数 16

对列表中的每一个值执行算术运算的最重要的节奏式方法是什么?例如,如果我从list1开始:

代码语言:javascript
运行
复制
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

我要在第二个项目中增加一个项目,即:

代码语言:javascript
运行
复制
list2 = [1, 3, 3, 5, 5, 7, 7, 9, 9, 11]

我试过:

代码语言:javascript
运行
复制
list1[::2]+1

还包括:

代码语言:javascript
运行
复制
for x in list1:
    x=2        
    list2 = list1[::x] + 1
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2016-03-15 12:36:51

可以将slicing与列表理解一起使用,如下所示:

代码语言:javascript
运行
复制
In [26]: list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

In [27]: list1[1::2] = [x+1 for x in list1[1::2]]

In [28]: list1
Out[28]: [1, 3, 3, 5, 5, 7, 7, 9, 9, 11]
票数 18
EN

Stack Overflow用户

发布于 2016-03-15 12:38:54

numpy还允许您对片使用+=操作:

代码语言:javascript
运行
复制
In [15]: import numpy as np

In [16]: l = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

In [17]: l[1::2] += 1

In [18]: l
Out[18]: array([ 1,  3,  3,  5,  5,  7,  7,  9,  9, 11])
票数 9
EN

Stack Overflow用户

发布于 2016-03-15 12:35:28

使用enumerate列表理解

代码语言:javascript
运行
复制
>>> list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> [v+1 if i%2!=0 else v for i,v in enumerate(list1)]
[1, 3, 3, 5, 5, 7, 7, 9, 9, 11]
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36011478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档