python的入门学习-可变对象和不可变对象、元素截取、列表的查找、插入、删除、元组、集合、字典

目录

知识点1.可变对象和不可变对象

1.类型

知识2.元素截取和deepcopy

一.解决方法元素截取:

二.解决方法deepcopy:

知识点3.列表的查找、插入、删除

一.删除

二.查找

1.index只查找第一个出现的元素

三.插入

1.append(添加的最后一个元素)

2.insert(插入的位置,插入的元素)

知识点3.元组

1.列表变元组

2.创建单个元组

知识点4.集合

1.集合的创建:

2.列表换集合set([])

3.集合唯一性

4.add和update

1.add

2.update

5.add元素必须是可哈希对象且update必须是可迭代对象

6.集合输出时无序

7.集合的并集、交集、叉集、对称

1.交集

2.并集

3.叉集

4.对称

5.子集

知识点5.字典

1.初始化字典

1)d.fromkeys(seq[,value])不会改变d1对象中的元素

2)dict()创建字典

3)创建新的对象:d1【‘键’】

2.若d1有元素,使用d1.fromkey()d1中元素清除

3.update字典一次性插入多个元素和修改新的对象

4.删除

知识6.浅拷贝&深拷贝

一.浅拷贝

二.深拷贝


知识点1.可变对象和不可变对象

1.类型

可变类型:列表,字典

不可变类型:字符串,元组,数值

可变类型【可以对元素的值进行修改而不改变内存地址】

ls=[1,2,3]
print(id(ls))
ls[1]=5
print(id(ls))

>>4396867264
4396867264

可变类型即使定义的相同,地址也不同(列表和字典)

ls=[1,2,3]
print(id(ls))
ls=[1,2,3]
print(id(ls))

>>4531461888
4535166656

不可变类型即使再定义的相同,地址也不变

变量的赋值实际上是

知识2.元素截取和deepcopy

如何解决修改一个对象的元素值不影响另一个对象呢?

一.解决方法元素截取

ls=[1,2,3]
ls1=ls[:]
ls[1]=5
print(ls)
print(ls1)

>>[1, 5, 3]
[1, 2, 3]

二.解决方法deepcopy

二维列表的元素修改不能使用元素截取,只能用deepcopy实现列表元素的复制

import copy
ls1=[1,[2,3]]
ls2=copy.deepcopy(ls1)
print(ls2)
ls1[1][0]=5
ls2[1][1]=9
print(ls1,ls2)

>>[1, [2, 3]]
[1, [5, 3]] [1, [2, 9]](逗号在print后面会变成空格)

知识点3.列表的查找、插入、删除

一.删除

  • del ls[:]
  • ls[:]=[]
ls=[0,1,2,3,4,5,6,7,8]
del ls[7]
print(ls)
del ls[0:3]
print(ls)
ls[0:1]=[]
print(ls)

>>[0, 1, 2, 3, 4, 5, 6, 8]
[3, 4, 5, 6, 8]
[4, 5, 6, 8]

二.查找

1.index只查找第一个出现的元素

ls=[0,1,3,4,3]
print(ls.index(3))

三.插入

1.append(添加的最后一个元素)

ls=[0,1,3,4,3]
ls.append(0)
print(ls)

2.insert(插入的位置,插入的元素)

ls=[0,1,3,4,3]
ls.insert(0,9)
print(ls)

>>[9, 0, 1, 3, 4, 3]

1.列表的最大元素和最小元素max(ls)

ls=[0,1,3,4,3]
print(max(ls))

2.列表某元素出现的次数ls.count(x)

ls=[0,1,3,4,3]
print(ls.count(3))

>>2

3.计算一个列表中的元素len(ls)

ls=[0,1,3,4,3]
print(len(ls))

知识点3.元组

1.列表变元组

tuple([])

t=tuple([1,'one','-'])
print(t[2])

2.创建单个元组

在唯一一个元素后面加

t=(1)
print(type(t))

>><class 'int'>

知识点4.集合

1.集合的创建:

为和字典区分开,空集合创建只能使用set函数

2.列表换集合set([])

s=set([1,2,3])
print(s)

>>{1,2,3}

3.集合唯一性

s={1,2,3,4,3}
print(s)

>>{1,2,3,4}

4.add和update

1.add

插入新元素到集合中

2.update

将x拆分成多个元素在插入集合中,若之前就有x则把x加入拆新的x

s={1,2,3,4,3}
s.add('python')
print(s)
s.update('python')
print(s)

5.add元素必须是可哈希对象且update必须是可迭代对象

6.集合输出时无序

  • 可哈希对象不是列表、集合、字典
  • 可迭代对象可以是字符串、列表、元组

>>{'o', 1, 2, 3, 4, 'n', 't', 'h', 'y', 'p'}

7.集合的并集、交集、叉集、对称

1.交集

s1s2共有的

s1=set([1,2,3])
s2=set([2,3,4])
print(s1.intersection(s2))

2.并集

s1s2都有的

print(s1.union(s2))

3.叉集

s1有的,s2没有

print(s1.difference(s2))

4.对称

s1s2互相没有的

print(s1.symmetric_difference(s2))

5.子集

  • issuperset 父集
  • issubset 子集
s1=set([2,3])
s2=set([2,3,4])
print(s1.issubset(s2))
print(s1.issuperset(s2))

>>ture

false

知识点5.字典

唯一且键必须为可哈希对象且无序

1.初始化字典

1)d.fromkeys(seq[,value])不会改变d1对象中的元素

seq包含了所有键名、默认None

d1={}.fromkeys(['one','two','three'])
print(d1)

>>{'one':none'two':none,'three':none}

d1={}.fromkeys(['one','two','three'],'true')
print(d1)

>>>>{'one':true'two':true,'three':true}

2)dict()创建字典

若只想输出值,则元素对象【键】即可(键要有双引号)

d1=dict(age=10)
print(d1['age'])

>10

3)创建新的对象:d1【‘键’】

d1['name']='zhu'

2.若d1有元素,使用d1.fromkey()d1中元素清除

3.update字典一次性插入多个元素和修改新的对象

d1=dict(age=10)
print(d1['age'])
d1.update(sno='123456')
print(d1)
d1=dict(age=10)
d1.update(age=18)
print(d1)

>>{'age':10,'sno':123456"}

['age':18]

4.删除

1)del

del后面跟着对象[键]

d1=dict(age=10,name='zhu')
print(d1)
del d1['age']
print(d1)

>>{name:'zhu'}

2)d.pop(key)

d1.pop('name')
print(d1)

>>{}

知识6.浅拷贝&深拷贝

一.浅拷贝

对字典d 进行浅拷贝d.copy()

使字典对象指向不同地址,但对于统一字典对象内元素却不具有相互独立的关系

d1={'age':10,'name':'zhu','score':{'python':100,'math':99}}
d2=d1
d3=d1.copy()
print(id(d2),id(d3))

>>4358334592 4358333952

  • 元素键修改不会改变浅拷贝的对象
d1['age']=18
print(d3)
print(d2)

>>{'age': 10, 'name': 'zhu', 'score': {'python': 100, 'math': 99}}
{'age': 18, 'name': 'zhu', 'score': {'python': 100, 'math': 99}}

  • 浅拷贝不会改变元素键的地址
d1['score']['math']=66
print(d1)
print(d3)

>>{'age': 18, 'name': 'zhu', 'score': {'python': 100, 'math': 66}}
{'age': 10, 'name': 'zhu', 'score': {'python': 100, 'math': 66}}

二.深拷贝

二维字典的修改:可以改变元素键的地址

import copy

copy.deepcopy()

import copy
d1={'age':10,'name':'zhu','score':{'python':100,'math':99}}
d2=copy.deepcopy(d1)
d1['score']['python']=110
print(d1)
print(d2)

>>{'age': 10, 'name': 'zhu', 'score': {'python': 110, 'math': 99}}
{'age': 10, 'name': 'zhu', 'score': {'python': 100, 'math': 99}}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值