有没有一种方法可以按指定的数字扩展列表?最初,我有一个大小为5的列表,根据某个函数的返回值,我需要按该大小扩展列表。这是我的代码用指定的数字扩展python列表
list = [0,0] # size is 2
size = some_function() # function returns 3
list.extend(size)
print len(list) # should print 5
有没有一种方法可以按指定的数字扩展列表?最初,我有一个大小为5的列表,根据某个函数的返回值,我需要按该大小扩展列表。这是我的代码用指定的数字扩展python列表
list = [0,0] # size is 2
size = some_function() # function returns 3
list.extend(size)
print len(list) # should print 5
Python没有的“预分配,”大小列表的概念。列表以arraylist的形式实现,并设计为通过固定大小的分区动态增长。列表中的索引必须总是包含一个值,不存在分配的空索引(至少用户可以访问)。
在大多数情况下,在实际向元素添加元素之前,人为地增大列表大小的性能会有很小的提升。这是因为列表是引用列表的事实,所以你甚至没有为任何特定的对象预先分配内存,只是为了一堆指针。但是,如果这真的是你想要的,你可以做到以下几点:
lst.extend([None]*size)
这将通过给定大小成长列表(注意,我从list
改变变量的名称lst
以免阴影内置list
),并用None
填充插槽。但是,一般来说,当你拥有这些物品时,只要延长就好,或者随时追加它们。
这工作。非常感谢。 – barathrum 2014-10-17 19:52:57
也许
my_list = [0,0]
new_size = 3
#my_list = [my_list[0]] * (new_size + len(my_list))
my_list += [None] * new_size
这将是一个方法,但my_list.extend远远大于我的回答
这将填充新列表中每个元素与原始列表中第一个元素的值。几乎可以肯定*不是*打算的。 – aruisdante 2014-10-17 19:55:17
更好到底为什么要这么做? – thefourtheye 2014-10-17 19:30:04
Python不允许空的列表元素,但你可以'lst.extend([None] * size)'(不要命名你自己的列表'list')。 – jonrsharpe 2014-10-17 19:30:52
或者''0] * size',考虑到你预先用两个'0'填充了列表?但是@jonrsharpe提出了同样的想法。 – abarnert 2014-10-17 19:33:33