Python基础知识学习(第二部分)

一、列表

列表:相当于其他语言中的数组

1.列表的创建

语法结构:
·使用中括号:列表对象名=[‘a’,‘b’,‘c’]
·调用内置函数list():列表对象名=list([‘a’,‘b’,‘c’])

2.列表的特点

·列表元素按顺序有序排序
·索引映射唯一一个数据
·可以重复储存数据
·任意数据类型混存
·根据需要动态分布和回收内存

3.列表的查询操作

·获取列表中指定元素的索引

index():
·只返回相同元素的第一个元素的索引
·查询元素不存在,输出:ValueError
·在指定的索引范围内进行查找(包括起始索引,不包括终止索引)
eg:

a=['hello','world','python','hello']
print(a.index('hello'))
print(a.index('hello',1,4))

运行结果:
请添加图片描述

·获取列表中的单个元素:list[]

·正向索引:0到n-1
`逆向索引:-n到1
·指定索引不存在:IndexError

·获取列表中的多个元素—切片操作

语法格式:列表名列表名[start:stop:step]
·切片结果:原列表片段的拷贝,产生一个新的列表对象
·切片范围:[start,stop)
·step默认为1:列表名[start:stop]
·step为正数—从start开始往后计算切片
·step为负数—从start开始往前计算切片

·判断指定元素在列表中是否存在

语法格式:元素 in 列表名;元素 not in 列表名
返回值:true,false

·列表元素的遍历

for 迭代变量 in 列表名
eg:

a=['a','b','c']
for i in a
    print(i)

4.列表元素的增加、删除、修改、排序

·增加操作

方法操作结果语法结构
append()在列表的末尾添加一个元素列表对象名.append(所添加元素)
extend()在列表的末尾至少添加一个元素列表对象名.extend(所添加多个元素组成的列表)
insert()在列表的任意位置添加一个元素(原索引位置处的元素向后移位)列表对象名.insert(索引,所添加元素)
切片在列表的任意位置添加至少一个元素(索引位置后的所有元素被切片中的元素替代,并不再出现)/

eg:

a=['hello','world','python','hello']
b=[1,2,3]
a[2:]=b
print(a)

运行结果:
请添加图片描述

·删除操作

方法操作结果语法结构
remove()一次删除一个元素;重复元素只删除一个;元素不存在输出ValueErrorremove(元素)
pop()删除一个指定索引位置上的元素;不指定索引删除列表中的最后一个元素;指定索引不存在输出IndexErrorpop(索引);pop()
clear()清空列表列表对象名.clear()
del删除列表del l列表对象名
切片1.一次至少删除一个元素,并产生一个新的列表对象;2.不产生新的列表对象,只删除列表中的内容1.新列表对象名=列表对象名[start:stop];2.列表对象名[start:stop]=[]

eg:

lst=[1,2,3,4,5]
lst[1:3]=[]
print(lst)
print(lst[2])

运行结果:
请添加图片描述

·修改操作

①为指定索引元素赋值

语法结构:列表对象名[索引]=所要赋的新值

②为指定切片赋值

语法结构:列表对象名[start:stop]=[新元素1,新元素2,…,新元素n]
eg:

lst=[1,2,3,4,5]
lst[1:3]=[222,333,444,555,666,777,888]
print(lst)

运行结果:
请添加图片描述

·排序操作

①sort()

升序排序:列表中所有元素按照从小到大进行排序
降序排序:sort(reverse=True)
语法结构:

lst=[1,9,3,4,2,8]
lst.sort()
print(lst)
lst.sort(reverse=True)
print(lst)
②sorted()

语法结构和使用方法与sort()相同,区别在于sorted()不改变原列表,产生一个新列表

5.列表生成式(生成列表的公式)

语法格式:列表对象名=[表示列表元素的表达式 for 自定义变量 in 可迭代对象]
(注意:“表示列表元素的表达式”中通常包含自定义变量)
eg:

a=[i*i for i in range(1,10)]
print(a)

运行结果:
请添加图片描述

二、字典

字典:
python内置的数据结构之一,于列表一样是可变序列(可以进行增删改操作);以键值对的方式存储数据;字典是一个无序的序列(其存储顺序是依据哈希函数计算得出的);其实现功能类似结构体
语法结构:字典名={键:值,键:值,…,}

1.字典的实现原理

字典的实现原理与查字典类似,Python是根据key查找value所在的位置(提高查找效率)

2.字典的创建

①使用花括号:字典名={键:值,键:值,…,}
②使用dict函数:dict(name=‘Jack’,age=10)
③创建空字典:字典名={}

3.字典元素的获取

①[]:字典名[key]
(如果字典中不存在指定的key,输出KeyError)
②get():字典名.get(key)
(如果字典中不存在指定的key,输出None)

4.字典的增删改操作

·key的判断

语法结构:键 in 字典名;键 not in 字典名
返回值:True;False

·删除操作

删除指定key:语法结构:del 字典名[key]
清空字典:字典名.clear()

·增加、修改操作

字典名[key]=值(原本有key—修改;原本无key—新增)

5.获取字典视图

keys():获取字典中所有key
values():获取字典中所有value
list(keys/values):将所有key/values组成的视图转成列表
items():获取字典中所有键值对
语法结构:

a={'aa':100,'bb':90,'cc':80}
#获取所有的key
k=a.keys()
print(k)
print(type(k))
print(list(k))
#获取所有value
v=a.values()
print(v)
print(type(v))
print(list(v))
#获取所有键值对
i=a.items()
print(i)
print(type(i))
print(list(i))

6.字典元素的遍历

语法结构:

a={'aa':100,'bb':90,'cc':80}
for i in a:
    print(i)#获取键
    print(a[i])#获取值
    print(a.get(i))#获取值

7.字典的特点

·字典中的所有元素都是键值对,键不允许重复,值可以
·字典中的元素是无序的
·字典中的key必须是不可变对象(整数,字符串)
·可以根据需要动态分配内存
·字典会浪费较大的内存,是一种使用空间换时间的数据结构(查找速度快但是浪费内存)

8.字典生成式

·zip()函数:用于将可迭代的对象作为参数,将对象中对应元素打包成一个元组,然后返回由这些元组组成的列表
语法结构:
字典名={key:value for key,value in zip(key,value)}

a=['aa','bb','cc']
b=[10,20,30]
c={a:b for a,b in zip(a,b)}
print(c)

四、元组

元组:Python内置的数据结构之一,是一个不可变序列
语法结构:元组对象名=(元素对象1,元素对象2,…)
·不可变序列与可变序列
不可变序列(字符串,元组):
没有增删改的操作,更改后对象地址更改
可变序列(列表,字典):
有增删改操作,更改后对象地址不发生更改

1.元组的创建方式

·直接小括号:元组对象名=(元素对象1,元素对象2,…)
·内置函数tuple():元组对象名=tuple(元素对象1,元素对象2,…)
·只包含一个元素的元组需要使用小括号+逗号:元组对象名=(元素对象1,)

2.为什么要将元组设计成不可变序列

·多任务环境下,同时操作对象时不需要加锁
·在程序中应尽量使用不可变序列
注意事项:
①元组中储存的是对象的引用
②如果元组中对象本身是不可变对象,则不能引用其他对象
③如果元组中的对象是可变对象,则可变对象的引用不允许改变,但是数据可以改变

错误操作:

a=(10,[20,30],40)
a[1]=[666,777]#元组是不允许修改元素的
print(a)

运行结果:
请添加图片描述
正确操作:

a=(10,[20,30],40)
a[1].append(666)
print(a)

运行结果:
请添加图片描述

3.元组的遍历

元组是可迭代对象,可以使用for…in遍历
语法结构:for i in 元组对象名:

四、集合

集合:Python内置的数据结构之一,是可变序列,集合是没有value的字典(储存key的机制与字典相同)

1.集合的创建方式

·直接使用{}:集合对象名={元素1,元素2,…}
·内置函数set():
使用方法:

a=set(range(5))
print(a)
print(set([3,4,4,5]))#列表转集合
print(set((3,4,4,5)))#元组转集合
print(set('python'))#字符串转集合
#定义空集合
b=set()

运行结果:
请添加图片描述

注意:集合和字典中的key均不允许重复

2.集合的相关操作

·判断操作

in 或 not in

·增加操作

add():一次添加一个元素
update():至少添加一个元素
语法格式:集合对象名.add(新增元素);集合对象名.update({元素1,元素2,…})

·删除操作

remove():一次删除一个指定元素,元素不存在输出异常:集合对象名.remove(要移除的元素)
discared():一次删除一个指定元素,元素不存在不会输出异常:语法格式同上
pop():一次只删除一个任意元素:语法格式同上
clear():清空集合:集合对象名.clear()

3.集合间的关系

·两个集合是否相等(==or!=)

·只判断内容不判断顺序
·返回值:true/false

·一个集合是否是另一个集合的子集(issubset)

·一个集合是否是另一个集合的超集(issuperset)

·两个集合有无交集(isdisjoint)

eg:

a1={1,2,3,4,5}
a2={1,2,3}
a3={1,2,9}
print(a2.issubset(a1))
print(a3.issubset(a1))

·返回值:true/false

4.集合的数据操作

请添加图片描述

①交集:intersection()、&
②并集:union()、|
③差集:difference()、-
④对称差集:symmetric_difference()、^
eg:

a1={1,2,3,4,5}
a2={1,2,3}
print(a1.intersection(a2))
print(a1&a2)

运行结果:
请添加图片描述

5.集合生成式

语法格式:集合对象名={i*i for i in range(1,10)}
注意:集合中生成元素的顺序非字典序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值