2014-10-17 22 views
0

有没有一种方法可以按指定的数字扩展列表?最初,我有一个大小为5的列表,根据某个函数的返回值,我需要按该大小扩展列表。这是我的代码用指定的数字扩展python列表

list = [0,0] # size is 2 

size = some_function() # function returns 3 

list.extend(size) 

print len(list) # should print 5 
+4

更好到底为什么要这么做? – thefourtheye 2014-10-17 19:30:04

+2

Python不允许空的列表元素,但你可以'lst.extend([None] * size)'(不要命名你自己的列表'list')。 – jonrsharpe 2014-10-17 19:30:52

+0

或者''0] * size',考虑到你预先用两个'0'填充了列表?但是@jonrsharpe提出了同样的想法。 – abarnert 2014-10-17 19:33:33

回答

0

Python没有的“预分配,”大小列表的概念。列表以arraylist的形式实现,并设计为通过固定大小的分区动态增长。列表中的索引必须总是包含一个值,不存在分配的空索引(至少用户可以访问)。

在大多数情况下,在实际向元素添加元素之前,人为地增大列表大小的性能会有很小的提升。这是因为列表是引用列表的事实,所以你甚至没有为任何特定的对象预先分配内存,只是为了一堆指针。但是,如果这真的是你想要的,你可以做到以下几点:

lst.extend([None]*size) 

这将通过给定大小成长列表(注意,我从list改变变量的名称lst以免阴影内置list),并用None填充插槽。但是,一般来说,当你拥有这些物品时,只要延长就好,或者随时追加它们。

+0

这工作。非常感谢。 – barathrum 2014-10-17 19:52:57

-2

也许

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远远大于我的回答

+1

这将填充新列表中每个元素与原始列表中第一个元素的值。几乎可以肯定*不是*打算的。 – aruisdante 2014-10-17 19:55:17