Python列表元素语法

时间:2013-11-16 09:10:01

标签: python python-2.7 python-3.x

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

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

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

......但这似乎不起作用。我应该如何尽可能简单地编写代码来获得想要的效果?

4 个答案:

答案 0 :(得分:2)

以下代码 change 创建一个新的int对象并重新绑定x,而不是更改列表中的项目。

for x in a:
    x *= 2

要更改列表项,请使用a[..] = ..

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

你也可以使用List comprehension作为@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

答案 1 :(得分:1)

您可以使用:

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]

答案 2 :(得分:1)

您可以使用list comprehensionmap()功能。

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)

答案 3 :(得分:1)

如果你发现你需要做很多这些事情,也许你应该使用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之间存在开销转换,因此如果您需要执行多项操作,那么这只是值得(效率明智)。