嵌套列表 (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)
可以使用多个索引访问嵌套列表中的单个元素。
嵌套列表中各元素的索引如下所示:
#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]是倒数第二,依此类推。
嵌套列表中项目的负索引如下所示:
# 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