栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 学习笔记之数据结构(列表篇)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 学习笔记之数据结构(列表篇)

列表

列表是 Python 中基本的数据结构,列表中的每个元素都分配一个数字——索引(位置),第一个索引是 0,第二个索引是 1, 以此类推
列表的数据项不需要具有相同的类型

列表基本操作

创建一个列表,只要把逗号分隔的不同数据项使用方括号括起来即可

# 新建列表
testlist = [10086, '中国移动', [1,2,3,4,5]]
print('testlist: ', testlist)
print()
# 访问列表长度
print('len(testlist): ', len(testlist))

*上述代码输出结果: *

testlist:  [10086, '中国移动', [1, 2, 3, 4, 5]]

len(testlist):  3

可以使用下标索引来访问列表中的值(正序和倒序都可),同样也可以使用方括号的形式截取元素

# 从第二个元素 访问到 列表结尾
print('testlis[1:]: ', testlist[1:])
# 向列表添加元素
testlist.append({})
print('testlist.append({}) 后: ', testlist)
# 列表的最后一个元素
print('testlist[-1]: ', testlist[-1])
# 弹出列表元素
testlist.pop(1)
print('testlist.pop(1) 后: ', testlist)
# 更新列表元素
testlist[0] = 1008611
print('使用 testlist[0] = 1008611 更新列表后 ')
print('testlist[0] = ', testlist[0])
# 使用 del 删除列表元素
print('原始列表: ', testlist)
del testlist[2]
print('删除第三个元素后的列表: ', testlist)

*上述代码输出结果: *

testlis[1:]:  ['中国移动', [1, 2, 3, 4, 5]]
testlist.append({}) 后:  [10086, '中国移动', [1, 2, 3, 4, 5], {}]
testlist[-1]:  {}
testlist.pop(1) 后:  [10086, [1, 2, 3, 4, 5], {}]
使用 testlist[0] = 1008611 更新列表后 
testlist[0] = 1008611
原始列表: [1008611, [1, 2, 3, 4, 5], {}]
删除第三个元素后的列表: [10086, [1, 2, 3, 4, 5]]
列表脚本操作符
[1,2,3]+[4,5,6]

结果为 [1,2,3,4,5,6],用于组合列表

['Hi']*4

结果为 [‘Hi’,‘Hi’,‘Hi’,‘Hi’],用于重复列表

3 in [1,2,3]

结果为 True,元素是否存在于列表中

列表函数和方法
len(list)----- 列表元素的个数
max(list)----- 返回列表元素的最大值
min(list)----- 返回列表元素的最小值
list(seq)----- 将元组转化为列表
list.append(obj)---------- 在列表末尾添加新的对象
list.count(obj)----------- 统计某个元素在列表中出现的次数
list.extend(seq)---------- 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj)----------- 从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj)--- 将对象插入列表
list.pop([index=-1])------ 移除列表中的一个元素(默认最后一个元素,可以改),并返回该元素的值
list.remove(obj)---------- 移除列表中某个值的第一个匹配项
list.reverse()------------ 反向列表中元素
list.clear()-------------- 清空列表
list.copy()--------------- 复制列表
list.sort(key=None, reverse=False)-- 对原列表进行排序,默认是正序
列表构成矩阵
# 列表构成矩阵
matrix = [[1,2,3],
          [4,5,6],
          [7,8,9]]
print('matrix: ', matrix)
print('matrix[1]: ', matrix[1])
print('matrix[1][1]: ', matrix[1][1])
print()
col2 = [row[1] for row in matrix]
print('col2 = [row[1] for row in matrix]: ', col2)
col2even = [row[1] for row in matrix  if row[1] % 2 == 0]
print('col2even = [row[1] for row in matrix  if row[1] % 2 == 0]: ', col2even)

*上述代码输出结果: *

matrix:  [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
matrix[1]:  [4, 5, 6]
matrix[1][1]:  5

col2 = [row[1] for row in matrix]:  [2, 5, 8]
col2even = [row[1] for row in matrix  if row[1] % 2 == 0]:  [2, 8]
列表转化为字符串
temp_list = ['H', 'e', 'l', 'l', 'o']
result = ''.join(temp_list)
print(result)    # Hello
常用操作性能

按索引取值和赋值 ( v=a[i], a[i]=v )
由于列表的随机访问特性,这两个操作执行时间与列表大小无关,均为 O(1)

列表增长,append() ,__add__() "+"
list.append(v) , 执行时间是 O(1)
list= list +[v] , 执行时间是 O(n+k),其中 k 是被加的列表长度

OperationBig-O Efficiency
index []O(1)
index assignmentO(1)
appendO(1)
pop()O(1)
pop(i)O(n)
insert(i, item)O(n)
del operatorO(n)
iterationO(n)
contains(in)O(n)
get slice [x : y]O(k)
del sliceO(n)
set sliceO(n+k)
reverseO(n)
concatenateO(k)
sort(归并)O(n log n)
multiplyO(nk)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290775.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号