嵌套列表 (Nested List)

列表可以包含任何对象,甚至可以包含另一个列表(子列表),而后者又可以包含子列表,依此类推。 这称为嵌套列表

可以使用它将数据排列为分层结构。

创建一个嵌套列表 (Create a Nested List)

通过放置逗号分隔的子列表序列来创建嵌套列表。

(A nested list is created by placing a comma-separated sequence of sublists.)

# Example: Create a nested list
L = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']
print(L)
['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']

按索引访问嵌套列表元素 (Access Nested List Items by Index)

可以使用多个索引访问嵌套列表中的单个元素。

嵌套列表中各元素的索引如下所示:

python list嵌套排序 python list嵌套list_嵌套

#Example: Access items of a nested list
L = ['a', 'b', ['cc', 'dd', ['eee', 'fff']], 'g', 'h']
print(L[2])        # ['cc', 'dd', ['eee', 'fff']]
print(L[2][2])     # ['eee', 'fff']
print(L[2][2][0])  # eee
['cc', 'dd', ['eee', 'fff']]
['eee', 'fff']
eee

嵌套列表中的负列表索引(Negative List Indexing In a Nested List)

也可以通过负索引访问嵌套列表。

负索引从列表末尾开始倒数。 因此,L[-1]是指最后一项,L[-2]是倒数第二,依此类推。

嵌套列表中项目的负索引如下所示:

python list嵌套排序 python list嵌套list_开发语言_02

# Example: Access nested list items by Negative Index
L = ['a', 'b', ['cc', 'dd', ['eee', 'fff']], 'g', 'h']
print(L[-3])          # ['cc', 'dd', ['eee', 'fff']]
print(L[-3][-1])      # ['eee', 'fff']
print(L[-3][-1][-2])  # eee
['cc', 'dd', ['eee', 'fff']]
['eee', 'fff']
eee

更改嵌套列表元素的值

可以通过指定其索引号来更改嵌套列表中特定元素的值。

# Example: change item value in a nested list

L = ['a', ['bb', 'cc'], 'd']
L[1][1] = 0
print(L) # ['a', ['bb', 0], 'd']
['a', ['bb', 0], 'd']

将元素添加到嵌套列表

要将一个新值添加到嵌套列表的末尾,可使用append()方法。

L = ['a', ['bb', 'cc'], 'd']
L[1].append('xx')
print(L)    # ['a', ['bb', 'cc', 'xx'], 'd']
['a', ['bb', 'cc', 'xx'], 'd']

当想在嵌套列表中的特定位置插入元素时,可使用insert()方法。

L = ['a', ['bb', 'cc'], 'd']
L[1].insert(0,'xx')
print(L)    # ['a', ['xx', 'bb', 'cc'], 'd']
['a', ['xx', 'bb', 'cc'], 'd']

可以使用extend()方法将一个列表合并到另一个列表中。

L = ['a', ['bb', 'cc'], 'd']
L[1].extend([1,2,3])
print(L)    # ['a', ['bb', 'cc', 1, 2, 3], 'd']
['a', ['bb', 'cc', 1, 2, 3], 'd']

从嵌套列表中删除元素

如果知道所需元素的索引,则可以使用pop()方法。 它修改列表并返回删除的元素。

L = ['a', ['bb', 'cc', 'dd'], 'e']
x = L[1].pop(1)
print(L)    # ['a', ['bb', 'dd'], 'e']

# removed item
print(x)  # cc
['a', ['bb', 'dd'], 'e']
cc

如果不需要删除的值,使用del语句。

L = ['a', ['bb', 'cc', 'dd'], 'e']
del L[1][1]
print(L)    # ['a', ['bb', 'dd'], 'e']
['a', ['bb', 'dd'], 'e']

如果不确定元素在列表中的何处,可使用remove()方法按值将其删除。

L = ['a', ['bb', 'cc', 'dd'], 'e']
L[1].remove('cc')
print(L)    # ['a', ['bb', 'dd'], 'e']
['a', ['bb', 'dd'], 'e']

得到嵌套列表长度

可以使用内置的len()函数来查找嵌套子列表中有多少元素。

示例:查找嵌套子列表的长度

L = ['a', ['bb', 'cc', 'dd'], 'e']
print(len(L))       # 3
print(len(L[1]))    # 3
3
3

遍历嵌套列表

要遍历嵌套列表的元素,可使用for循环。

L = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]   
for list in L:
    for number in list:
        print(number, end=' ')
1 2 3 4 5 6 7 8 9