Python 列表元素语法



我是python的新手,我想使用语法

a = [3, 6]
for x in a:
    x *= 2

所以"a"将是[6,12]

。但这似乎行不通。我应该如何编写代码,尽可能简单,以获得想要的效果?

下面的代码

更改创建一个新的 int 对象并重新绑定x ,而不是更改列表的项。
for x in a:
    x *= 2

要更改列表中的项目,您应该使用 a[..] = ..

for i in range(len(a)):
    a[i] *= 2

您还可以使用列表理解作为@Hyperboreus的答案。

若要更改嵌套列表的值,请使用嵌套循环。

for i in range(len(a)):
    for j in range(len(a[i]):
        a[i][j] *= 2

使用enumerate的替代方案。

for i, x in enumerate(a):
    a[i] = x * 2

你可以使用这个:

a = [x * 2 for x in a]

对于嵌套列表:

a = [ [1,2,3], [4,5,6] ]
a = [ [x * 2 for x in x] for x in a]

您可以使用列表推导或map()函数。

my_list = [3, 6]
my_list = [x * 2 for x in my_list]
my_list = [3, 6]
my_list = map(lambda x: x * 2, my_list)

如果你发现你需要做很多这些事情,也许你应该使用 numpy

>>> import numpy as np
>>> a = np.array([3, 6])
>>> a *= 2
>>> a
array([ 6, 12])

2(或更多)维数组的工作原理相同

>>> a = np.array([[3, 6],[4,5]])
>>> a *= 2
>>> a
array([[ 6, 12],
       [ 8, 10]])

但是在listnumpy.array之间转换存在开销,因此只有在您需要执行多个操作时才值得(效率方面)。

最新更新