2013-02-27 113 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]]