亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在python中創建一個具有一定大小的空列表

在python中創建一個具有一定大小的空列表

繁星coding 2019-07-19 10:36:45
在python中創建一個具有一定大小的空列表我想要創建一個可以包含10個元素的空列表(或者任何最好的方法)。在此之后,我希望在該列表中賦值,例如,應該顯示0到9:s1 = list();for i in range(0,9):    s1[i] = iprint  s1但是當我運行這段代碼時,它會生成一個錯誤,或者在另一種情況下它只顯示[](空)誰能解釋一下原因嗎?
查看完整描述

3 回答

?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

您不能將以下列表分配給lst[i] = something,除非列表已被至少初始化為i+1元素。您需要使用追加將元素添加到列表的末尾。lst.append(something).


(如果使用字典,可以使用賦值表示法)。


創建空列表:


>>> l = [None] * 10

>>> l

[None, None, None, None, None, None, None, None, None, None]

為上述列表中的現有元素賦值:


>>> l[1] = 5

>>> l

[None, 5, None, None, None, None, None, None, None, None]

記住l[15] = 5仍然會失敗,因為我們的列表只有10個元素。


Range(X)從[0,1,2,.X-1]


# 2.X only. Use list(range(10)) in 3.X.

>>> l = range(10)

>>> l

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

使用函數創建列表:


>>> def display():

...     s1 = []

...     for i in range(9): # This is just to tell you how to create a list.

...         s1.append(i)

...     return s1

... 

>>> print display()

[0, 1, 2, 3, 4, 5, 6, 7, 8]

列表理解(使用方格,因為對于范圍,您不需要做所有這些,您可以返回range(0,9) ):


>>> def display():

...     return [x**2 for x in range(9)]

... 

>>> print display()

[0, 1, 4, 9, 16, 25, 36, 49, 64]


查看完整回答
反對 回復 2019-07-19
?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

varunl目前接受的答案

 >>> l = [None] * 10
 >>> l [None, None, None, None, None, None, None, None, None, None]

對于像數字這樣的非引用類型,效果很好。不幸的是,如果您想要創建一個列表,您將遇到引用錯誤。Python 2.7.6中的示例:

>>> a = [[]]*10>>> a[[], [], [], [], [], [], [], [], [], []]>>> a[0].append(0)>>> a[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]>>>

如您所見,每個元素都指向同一個List對象。為了解決這個問題,您可以創建一個將每個位置初始化為不同對象引用的方法。

def init_list_of_objects(size):
    list_of_objects = list()
    for i in range(0,size):
        list_of_objects.append( list() ) #different object reference each time
    return list_of_objects>>> a = init_list_of_objects(10)>>> a[[], [], [], [], [], [], [], [], [], []]>>> a[0].append(0)>>> a[[0], [], [], [], [], [], [], [], [], []]>>>

可能有一種默認的內置python方式(而不是編寫函數),但我不確定它是什么。會很高興被糾正的!

編輯:它是[ [] for _ in range(10)]

例子:

>>> [ [random.random() for _ in range(2) ] for _ in range(5)]>>> [[0.7528051908943816, 0.4325669600055032], [0.510983236521753, 0.7789949902294716], [0.09475179523690558, 0.30216475640534635], [0.3996890132468158, 0.6374322093017013], [0.3374204010027543, 0.4514925173253973]]



查看完整回答
反對 回復 2019-07-19
  • 3 回答
  • 0 關注
  • 6913 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號