2013-05-05 37 views
1

好吧,所以我有一個問題,我需要從我已經拆分的列表中創建另一個列表。這是代碼。在列表中創建一個列表 - 不工作

def lists(): 
    instructionList = instructions() 
    Lists = instructionList.split('\n') 
    Instructions = [] 
    for values1 in Lists: 
    Instructions = Instructions + [values1.split(",")] 
    for values2 in Instructions: 
     newLists = [] 
     newLists = newLists + [values2.split(" ")] 
    print Instructions [3] 

當我創建指令表它的工作原理,但是當我嘗試這進一步創造newLists它給了我這個錯誤=>是錯誤:「名單」對象有沒有屬性「分裂」 屬性未找到。 您正試圖訪問不存在的對象的一部分。

我需要繼續打破同樣的列表。此外,我對此很新,所以請向我詳細解釋一些事情。

+0

使用'append()'將值添加到列表中。 – squiguy 2013-05-05 19:41:27

+0

我不想添加值我想要使用xxx.split來打破列表。但它不會繼續讓我這樣做 – Danrex 2013-05-05 19:44:42

回答

-1

因爲值2不是一個列表,它是指令中的一個變量!像指令[0]等

+0

那麼爲什麼值1工作呢?我不是在質疑你的困惑,我不知道如何解決它? – Danrex 2013-05-05 19:56:31

1

問題是,values1.split(",")評估到一個列表,然後您將其放入另一個列表並追加到Instructions。變量Instructions然後保存列表的列表。因此,分配給values2的每個元素都將是類型列表。

所以,如果你原來的instructions樣子:"a,b,c\nx,y,z\n"

Lists最終看起來像:["a,b,c" , "x,y,z"]

進入外環,values1首先是:"a,b,c"

所以,Instructions = Instructions + [values1.split(",")]給出:[ ["a" , "b" , "c"] ]

然後,當你進入內部循環時,values2起始爲:[ "a" , "b" , "c" ]

換句話說,這是一個不支持拆分的列表。

除此之外,我實際上並不清楚你想用這段代碼做什麼(內循環的目的是什麼?)。如果您的目標是獲取列表清單,請完全刪除該內部循環。如果你想要一個扁平列表,去掉[values1.split(",")周圍的方括號,這樣你只需追加兩個列表(並再次刪除內部循環)。