这可能吗:
myList = []
myList[12] = 'a'
myList[22] = 'b'
myList[32] = 'c'
myList[42] = 'd'
Run Code Online (Sandbox Code Playgroud)
当我尝试时,我得到:
# IndexError: list assignment index out of range #
Run Code Online (Sandbox Code Playgroud)
Ada*_*eld 50
在索引之前,您必须预先填充某些内容(例如0或者None):
myList = [None] * 100 # Create list of 100 'None's
myList[12] = 'a' # etc.
Run Code Online (Sandbox Code Playgroud)
或者,使用dict而不是列表,正如Alex Martelli建议的那样.
Ale*_*lli 27
对于"稀疏列表",您可以使用dict:
mylist = {}
mylist[12] = 'a'
Run Code Online (Sandbox Code Playgroud)
等等.如果你想要一个实际的列表(初始化它[],不是 (),当然- !),你需要填写未设置插槽_some_thing,例如None,通过一个小的辅助功能或子类list.
Tri*_*ych 18
这是一个快速列表包装器,如果您尝试将值分配给超过其长度的索引,则会使用零自动扩展列表.
class defaultlist(list):
def __setitem__(self, index, value):
size = len(self)
if index >= size:
self.extend(0 for _ in range(size, index + 1))
list.__setitem__(self, index, value)
Run Code Online (Sandbox Code Playgroud)
现在你可以这样做:
>>> a = defaultlist([1,2,3])
>>> a[1] = 5
[1,5,3]
>>> a[5] = 10
[1,5,3,0,0,10]
Run Code Online (Sandbox Code Playgroud)