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

Nak*_*hts 14 python list python-3.x

对列表中的每个第n个值执行算术运算的最pythonic方法是什么?例如,如果我从list1开始:

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)

我想在每个第二项添加1,这将给出:

list2 = [1, 3, 3, 5, 5, 7, 7, 9, 9, 11]
Run Code Online (Sandbox Code Playgroud)

我试过了:

list1[::2]+1
Run Code Online (Sandbox Code Playgroud)

并且:

for x in list1:
    x=2        
    list2 = list1[::x] + 1
Run Code Online (Sandbox Code Playgroud)

gtl*_*ert 16

您可以使用slicing列表推导如下:

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]
Run Code Online (Sandbox Code Playgroud)

  • 这看起来就像是iPython解释器,而不是特定于一个IDE. (4认同)
  • 在Enthought Canopy中使用控制台.你用的是控制台吗? (2认同)
  • 使用Canopy之类的东西,您可以访问运行程序时创建的变量 (2认同)

awe*_*oon 9

numpy允许您也使用+=切片操作:

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])
Run Code Online (Sandbox Code Playgroud)


Bha*_*Rao 5

使用enumerate清单理解

>>> 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]
Run Code Online (Sandbox Code Playgroud)