2013-02-27 127 views
1

我是一個Python初學者,我目前正在經歷的Zed Shaw的課程「學習Python中在Hardway」學習循環和列表

所以,在運動32告訴我們:

怎麼辦你製作一個二維(2D)列表? 這就是在這樣的名單列表:[[1,2,3],[4,5,6]

我這樣做:

# Extra 1 
global_list = [[1, 2, 3]] 
inside_list = [] 
for i in global_list[0]: 
    inside_list.append(i) 

global_list.append(inside_list) 
print(global_list) 

但我不完全確信這是正確的方法。我的問題是:有沒有辦法得到相同的結果,而沒有離開我在....循環?

我也試過這個,無濟於事。

global_list = [[1, 2, 3]] 
inside_list = [] 
for i in global_list[0]: 
    inside_list.append(i) 
    global_list.append(inside_list) 
    print(global_list) 

在此先感謝您的答案。

+0

你的答案是你的問題 – Claudiu 2013-02-27 03:50:02

+0

是否有更多的限制? '[[1,2,3],[4,5,6]]'是完全有效的...... – mgilson 2013-02-27 03:50:43

+0

我不認爲OP想知道如何複製粘貼'[[1,2,3],[ 4,5,6]]'。 ;)而是他想知道例如如何在一定範圍內建立3組。 – kay 2013-02-27 03:51:51

回答

0

問題是「你如何製作二維(2D)列表?」。給出的答案是「這是一個像這樣的列表中的列表:[[1,2,3],[4,5,6]]」。從字面上看,這就是答案:

>>> a = [[1, 2, 3], [4, 5, 6]] 
>>> print a 
[[1, 2, 3], [4, 5, 6]] 

你也可以這樣做:

>>> a = [[1, 2, 3]] 
>>> a.append([4, 5, 6]) 
>>> a 
[[1, 2, 3], [4, 5, 6]] 

你並不需要一個for循環追加內的另一個列表的列表:

>>> a = [[1, 2, 3]] 
>>> a[0] 
[1, 2, 3] 
>>> a.append(a[0]) 
>>> a 
[[1, 2, 3], [1, 2, 3]] 

然而,這使列表中的第二個元素與第一個列表相同,因此如果更改其中一個,則更改另一個:

>>> a[0] is a[1] 
True 
>>> a[0][0] = 4 
>>> a 
[[4, 2, 3], [4, 2, 3]] 

,你能做些什麼來讓列表的副本是list(a[0])

>>> a = [[1, 2, 3]] 
>>> a[0] 
[1, 2, 3] 
>>> a[0] is a[0] 
True 
>>> list(a[0]) 
[1, 2, 3] 
>>> a[0] is list(a[0]) 
False 
>>> a.append(list(a[0])) 
>>> a 
[[1, 2, 3], [1, 2, 3]] 
>>> a[0] is a[1] 
False 
>>> a[0][0] = 4 
>>> a 
[[4, 2, 3], [1, 2, 3]] 
1

列表可以像任何其他對象被附加,並插入到一個列表,例如:

outer_list = [] 
print(outer_list) 
inner_list1 = [1, 2, 3] 
outer_list.append(inner_list1) 
print(outer_list) 
inner_list2 = [4, 5, 6] 
outer_list.append(inner_list2) 
print(outer_list) 
1

我我不確定你是否已經完成了列表理解。然而,一個很好的方式做你正在做的事情是:

>>> global_list = [[1,2,3]] 

>>> global_list.append([i + 3 for i in global_list[0]]) 

>>> print global_list 

[[1, 2, 4], [4, 5, 6]]