2011-11-16 219 views

回答

9

列表中沒有「鍵」,只有索引。

您的代碼無法按照您期望的方式工作的原因是當index已超過列表的末尾時,list.insert(index, obj)未用「空白」條目填充列表;它只需將obj附加到列表中。

你可以使用一個字典這樣的:

In [19]: l = [None] * 50 
In [20]: l[42] = "foo" 
In [21]: l[43] = "bar" 
In [22]: l[44] = "bar" 
In [23]: print(l[43]) 
bar 

附註:

In [14]: d = {} 
In [15]: d[42] = "foo" 
In [16]: d[43] = "bar" 
In [17]: d[44] = "baz" 
In [18]: print(d[43]) 
bar 

或者,你可以用一個足夠大的數量的條目預先初始化列表我建議你不要調用變量list,因爲它會影響內建的list()

0

是的,你必須爲此使用字典。列表總是從0開始的連續指數

0

是你有什麼是元組,沒有鑰匙參與

打印(列表[1])會工作,但是,這是不是你的列表想做。

1

錯誤是因爲列表[41]不存在。

如果列表[41]存在,並且是最後一個元素list.insert(42,「foo」)等價於list.append(「foo」),則返回 else if if list有更多的元素值將被插入中間

1

我誤解了list.insert(i, x)做什麼。它不會替換第i位置上的元素,但將該元素插入此位置,將其餘部分移動。如果i th元素不存在,則將元素插入列表的末尾。

該實施例示出這樣的:

list = [] 
list.insert(42, "foo") 
list.insert(43, "bar") 
list.insert(44, "baz") 
list.insert(43, "qux") # qux is after baz, because baz in in fact at the index 2. 
print(list) 

list.insert(3, "test") # test is inserted between baz and qux, 
         # because baz is at index 2 and qux at index 3. 
print(list) 

輸出:

['foo', 'bar', 'baz', 'qux'] 
['foo', 'bar', 'baz', 'test', 'qux'] 

Codepad example

相關問題