如果我在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似乎儿子简单......
答案 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)
收到评论后,我做了一些测试,发现结果非常有趣!
答案 2 :(得分:-1)
尝试使用map
。由于一些内置的优化,它必须很快。
t = [1, 2, 3, 4, 5, 6, 7, 8]
print (map(lambda x:x + 1, t))