python的列表

1、列表的存储

列表是序列数组,可存储任意的数据类型对象,以下是列表的存储形式

 列表中元素地址是连续空间存储的,元素地址是任意的。

举例:

#列表可存储不同类型的数据对象
l1=[123,"字符串",True]
print(l1,type(l1))


#列表的简单赋值
a,b=[123,"字符串"]
print(a,b)

a,*b=[123,2,4,6]
print(a,b)

2、列表的序列化操作

列表是一种序列,因此可以使用索引取值、切片操作、in操作、加衔接等

1)取值

#赋值
l2=[1,2,3,4,5]

#取值2
print(l2[1])
print(l2[-4])

#切片
print(l2[1:2])
print(l2[-1:-2:-1])# 反向取值

2)in操作判断是否存在

#赋值
l3=[3,4,5,6]

#判断3是否在列表中
print(3 in l3)#True

3)➕衔接

#叠加,返回结果[1, 2, 3, 4, 5, 6]
l4=[1,2,3]
l5=[4,5,6]
print(l4+l5)

3、循环列表

结构:for 变量 in 字符串/元组/列表/字典:

l1=[1,2,3,4,5]
for i in l1:
    print(i)

"""
执行结果:
1
2
3
4
5
"""
#列表的range方法
for i in range(10):
     print(i)

"""
执行结果:
0
1
2
3
4
5
6
7
8
9
"""
#range还可以像切片一样取值
for i in range(1,10):
     print(i)

"""
执行结果:
1
2
3
4
5
6
7
8
9
"""

4、列表的增删改查(内置函数)3+3

1)增:append、 insert 、extend

#案例1追加数据
ll=[1,2,3]
ll1=[4,5,6]
ll.append(ll1)
print(ll)

"""
执行结果:
[1, 2, 3, [4, 5, 6]]
"""

#案例2 插入数据:一般不建议使用,牺牲效率;下标超出自动在最后插入
ll2=[1,2,3]
ll2.insert(2,4)#在下标为2的列表中插入4
print(ll2)

"""
执行结果:
[1, 2, 4, 3]
"""

#案例3向列表合并一个列表
ll3=[1,2,3]
ll4=[2,3,4]
ll3.extend(ll4)
print(ll3)

"""
执行结果:
[1, 2, 3, 2, 3, 4] 
"""

2)删除操作:pop、remove、clear

#案例1 默认移除最后一个元素,否则按照索引值去删除对应的元素
ll1=[11,22,33,44]
ll1.pop(2)
print(ll1)

#案例2移除相应的元素
ll2=[1,2,3,4,3]
ll2.remove(3)#从列表中直接移除元素3(从左向右的第一个元素)
print(ll2)


#案例3清除列表
ll3=[1,2,3,4]
ll3.clear()
print(ll3)

"""
执行结果:
[11, 22, 44]
[1, 2, 4, 3]
[]
"""

3)修改操作

#修改
ll1=[1,2,3,4]
ll1[2]=33
print(ll1)

"""
执行结果:
[1, 2, 33, 4]
"""

#计数 列表中33有2个
ll2=[11,22,33,44,33,44,55]
num=ll2.count(33)
print(num)

4)查询列表

#查询 通过数据查询索引,没有即报错
ll1=[11,22,33,44,33]
print(ll1.index(22))#1

#列表的颠倒和排序
ll2=[2,4,1,3,5]
ll2.sort()
print(ll2)

"""
执行结果:
[1, 2, 3, 4, 5]
"""

#列表的颠倒和排序
ll3=[2,4,1,3,5]
ll3.sort(reverse=True)#等价于ll3.reverse()
print(ll3)

"""
执行结果:
[5, 4, 3, 2, 1]
"""

5、可变和不可变数据类型

python有两种数据类型:可变数据类型和不可变数据类型

可变数据类型:在id(内存地址)不变的情况下,value值可变,则称为可变类型(列表、字典)

不可变数据类型:在value值改变,id(内存地址)也改变,则称为不可变类型(整型、浮点型、字符串、布尔值、元组)

#不可变数据类型(值改变,地址也改变)
s="old"
print(s,id(s))
s="new"
print(s,id(s))

"""
执行结果:
old 140408410005616
new 140408410005552
"""

#可变数据类型(值改变,地址不变)
l1=[1,2,3]
print(l1,id(l1))
l1[0]=111
print(l1,id(l1))

"""
执行结果:
[1, 2, 3] 140230216119936
[111, 2, 3] 140230216119936
"""

6、深浅拷贝

#赋值
l1=[1,2,3]
l2=l1#赋值不属于拷贝
print(id(l1))
print(id(l2))
l1[0]=1111
print(l2)

"""
执行结果:
140433023079104
140433023079104
[1111, 2, 3]
"""

#浅拷贝(切片和copy都属于浅拷贝)
l3=[2,5,4]
l4=l3.copy()
print(id(l3),id(l4))

"""
执行结果:
140704407242752 140704375816000
"""

#深拷贝
import copy
l5=[1,2,3,[4,5,6]]
l6=copy.deepcopy(l5)
print(l5,id(l5))
print(l6,id(l6))

"""
执行结果:
[1, 2, 3, [4, 5, 6]] 140468406501952
[1, 2, 3, [4, 5, 6]] 140468427309952
"""

7、列表生成式

列表生成式是非常强大的,可以直接生成出一个新的列表

#列表生成式(可以不带if语句)
l1_new=[i*i for i in range(10) if i%2==0]
print(l1_new)

"""
执行结果:
[0, 4, 16, 36, 64]
"""

#列表生成式可以嵌套多个循环
l2_old=[[1,2],[3,4],[5,6]]
l2_new=[j for i in l2_old for j in i]
print(l2_new)
"""
执行结果:
[1, 2, 3, 4, 5, 6]
"""

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值