python三大内建数据结构之列表(list)

列表(list):一组有顺序的数据的组合(用中括号括着)。(元组tuple是一种特殊的列表,不能修改,具有list所有操作除了修改(用圆括号括着))

创建及分片

# 空列表
l1 = []
# 有初值的列表(可放入若干个各种类型的数据)
l2 = [1, 2, 3, "lk"]
# 类似构造的创建方法
l3 = list()

# 列表的访问,按照下标索引(编程语言编号几乎都是从零开始) 下标索引不能越界
print(l2[0])

# 列表的分片操作 l[开始位置:结束位置(达不到):步长(默认为1)]  分片操作的位置可以越界,但超出的不会考虑
l = [1, 2, 3, 4, 5, 6]
# 位置值可以一个或者两个为空,系统给默认值开始位置和结束位置+1
print(l[:])
print(l[0:4:2])
print(l[-2:-4])
print(l[-2:-4:-1])#改变方向从右往左

   

分片操作会产生一个新的list,而不是共同管理变量的关系。

l = [1, 2, 3, 4, 5]
l1 = l
l2 = l[:]
print(id(l))
print(id(l1))
print(id(l2))

删除

list1 = [1, 2, 3, 4, 5]
print(list1)
print(id(list1))
del(list1[0])
print(list1)
print(id(list1))

列表的加、乘以及成员资格运算

list1 = [1, 2, 3, 4, 5]
list2 = [6, 7, 8]
list3 =list1+list2
print(list3)
list4 = list1*3
print(list4)
print(1 in list1)
print(10 in list1)

遍历(python独有的遍历方法)

list1 = [1, 2, 3, 4, 5]
list2 = [["a", 1], ["b", 2]]
for item in list1:
    print(item,end=" ")
print()
# 字典的遍历方法,局限性高
for k,v in list2:
    print(k, ",", v)

列表内容的生成方式(也可以for嵌套)

list1 = [1, 2, 3, 4, 5]
list2 = [item for item in list1]
print(list2)
list3 = [item*10 for item in list1]
print(list3)
list4 = [item for item in list1 if item % 2 == 0]
print(list4)
str1 = "13579"
list5 = [int(item) for item in str1]
print(list5)

列表常用的内置函数(可自行查看说明文档)

list1 = [1, 2, 3, 4, 5]
# 列表长度也就是元素个数
print(len(list1))
# 求最大值
print(max(list1))
# 求最小值
print(min(list1))
# 求和
print(sum(list1))
# 转换为list
str1 = "i study python"
print(list(str1))
print(list(str1.split(" ")))
#查找列表指定值的个数
print(lis1.count(1))

列表内容添加

 append末尾追加

list1 = [1, 2, 3, 4, 5]
list1.append(6)
print(list1)

insert指定位置前添加

list1 = [1, 2, 3, 4, 5]
list1.insert(0,0)
print(list1)

列表内容删除

del删除见前

pop弹出最后一个元素,并返回

list1 = [1, 2, 3, 4, 5]
print(list1.pop())
print(list1)

remove删除列表中某个值

list1 = [1, 2, 3, 4, 5,"m"]
list1.remove("m")
print(list1)

clear清空列表所以元素,但内存仍在(java List类似)

list1 = [1, 2, 3, 4, 5]
list1.clear()

数据变换

reverse所有数据倒序重存

list1 = [1, 2, 3, 4, 5]
list1.reverse()

extend后面加上一个列表

list1 = [1, 2, 3, 4, 5]
list2 = [4,3,2,1]
list1.extend(list2)

列表的拷贝和浅拷贝

赋值(传址)和浅拷贝(传值)区别

# python中赋值表示共同管理一份数据
list1 = [1, 2, 3, 4, 5]
list2 = list1
list2.pop()
print(list2)
print(list1)
# 拷贝则是把值拿过来重新分配内存
list1 = [1, 2, 3, 4, 5]
list2 = list1.copy()
list2.pop()
print(list2)
print(list1)

深拷贝和浅拷贝区别(浅拷贝只拷贝一层内容)

#浅拷贝表现
list1 = [1, 2, 3, 4, 5, [20, 30]]
list2 = list1.copy()
print(id(list1))
print(id(list2))
print(id(list1[5]))
print(id(list2[5]))
list1[5][0] = 40
print(list1)
print(list2)

最后关于tuple说一句,这里的不可修改是指那一份数据不可修改,两个tuple连接给一个新的tuple这类本质是创建的操作是允许的。但是内容修改会违法。

猜你喜欢

转载自blog.csdn.net/zhouchen1998/article/details/81148207
今日推荐