更改创建一个新的 int 对象并重新绑定
我是python的新手,我想使用语法
a = [3, 6]
for x in a:
x *= 2
所以"a"将是[6,12]
。但这似乎行不通。我应该如何编写代码,尽可能简单,以获得想要的效果?
下面的代码
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]])
但是在list
和numpy.array
之间转换存在开销,因此只有在您需要执行多个操作时才值得(效率方面)。