欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python基础语法-python三大内建数据结构之列表(list)

程序员文章站 2022-05-19 14:23:48
...

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

1.创建及分片

# 空列表
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])#改变方向从右往左

 

python基础语法-python三大内建数据结构之列表(list)   

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

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

python基础语法-python三大内建数据结构之列表(list)

2.删除

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

python基础语法-python三大内建数据结构之列表(list)

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

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基础语法-python三大内建数据结构之列表(list)

4.遍历(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)

python基础语法-python三大内建数据结构之列表(list)

5.列表内容的生成方式(也可以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)

python基础语法-python三大内建数据结构之列表(list)

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

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))

python基础语法-python三大内建数据结构之列表(list)

7.列表内容添加

 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)

8.列表内容删除

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()

9.数据变换

reverse所有数据倒序重存

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

extend后面加上一个列表

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

10.列表的拷贝和浅拷贝

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

# 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)

python基础语法-python三大内建数据结构之列表(list)

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

#浅拷贝表现
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)

python基础语法-python三大内建数据结构之列表(list)

 

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

相关标签: python语法