在python中简单更改列表:有效的方法?

时间:2017-11-08 14:30:48

标签: python list

如果我在python中有一个列表,我有很多numers示例:

list = [1,2,3,12,4,5,23,5,6,56,8,57,8678,345,234,13, .....]

所有整数的列表,所有整数都可以有不同的值...(我的情况是这个列表可能很长,实际上不是整数列表,而是一个对象列表,它们都来自同一类型一个属性年龄是一个整数) 什么是将所有这些值加1的最有效方法 是吗

new_list = [x+1 for x in list]

或者

new_list = []
for x in list:
    new_list.append(x+1)

(我猜它没什么区别)

或者是否有一种更有效的方法或其他数据结构可以使其更具性能? 我真的很想知道是否有任何方法,也许使用不同的列表,我可以更有效地执行此操作,因为+1似乎儿子简单......

3 个答案:

答案 0 :(得分:2)

如果你实际上有一个带有整数属性的对象列表,正如你所说,你可以就地更新属性:

class A(object):
    def __init__(self, x):
        self.x = x

my_list = [A(2), A(5), A(1)]
for obj in my_list:
    obj.x += 1
assert my_list[0].x == 3
assert my_list[1].x == 6
assert my_list[2].x == 2

答案 1 :(得分:0)

没有最快的方法,但我认为这是一个有趣的尝试,因为你从不使用比实际需要更多的RAM(你复制后删除条目)

list1 = []
while (len(list) != 0):
    list1.append(list.pop(0)+1)

收到评论后,我做了一些测试,发现结果非常有趣!

Testing results.

答案 2 :(得分:-1)

尝试使用map。由于一些内置的优化,它必须很快。

t = [1, 2, 3, 4, 5, 6, 7, 8]
print (map(lambda x:x + 1, t))