第三章 python基本数据结构

目录

3.1序列及其操作

3.2元组及其操作

3.2.1元组的创建与访问

3.3列表及其操作

3.3.1列表的创建与访问

3.3.2对列表的操作

3.3.3对整个列表操作

 3.4集合及其操作

3.4.1集合的创建

 3.4.2集合间的运算

 3.4.3集合函数的处理

3.5字典及其操作

3.5.1字典的创建

 3.5.2字典的处理


3.1序列及其操作

序列:具有先后顺序的一组元素。

通用操作符图片

逆向输出图片

序列通用函数图片

3.2元组及其操作

3.2.1元组的创建与访问

元组:用小括号()括起来的,里面元素用逗号分隔开的元素序列,元组的元素不可以修改。

语法格式1:tuple = (元素1,元素2,元素3,...,元素n)

语法格式2:tuple = 元素1,元素2,元素3,...,元素n

(1)通过索引访问元组元素 

subject = ('Chinese','Math', 'English','Music')
number = (1,2,3,4,5,6,7,8,9)
print('subject[2]:',subject[2])
print('number[5]:',number[5])
# 索引访问元素的单个字符
print('subject[2][2]:',subject[2][2])

(2)通过索引访问嵌套元组元素

tup = (2024,"abcd",(1,2,3,4))
print('tup[1][2]:',tup[1][2])
print('tup[2][1]:',tup[2][1])

(3)连接元组

subject = ('Chinese','Math', 'English','Music')
number = (1,2,3,4,5,6,7,8,9)
tup = subject + number
print(tup)

元组内置函数图片

3.3列表及其操作

3.3.1列表的创建与访问

列表:用方括号[ ]表示,元素之间用逗号隔开,是一种有序的数据集合。

语法格式1:ls = [元素1,元素2,元素3,...,元素n]

语法格式2:ls = list(元素1,元素2,元素3,...,元素n)

(1)元组与列表相互转换

stu_name = ['小苏','女',18]
tuple1 = tuple(stu_name)
print(tuple1)
stu_score = (98,95,97)
list1 = list(stu_score)
print(list1)

(2)间接或直接访问列表元素

list = ['Chinese','Math', 'English','Music',2024,1999]
# 间接访问
print(list[4])
# 直接访问
print(['Chinese','Math', 'English','Music',2024,1999][4])

3.3.2对列表的操作

对列表的操作图片

(1)修改和替换元素

语法格式:列表名 [索引] = 值

(2)增加元素

列表名.append (新元素)

列表名.insert(索引,新元素)

(3)删除元素 

del 列表名 [索引]

列表名.pop(索引)

小苏有话说:使用pop命令时,删除索引元素的同时会返回要删元素;没有指定索引,默认删除最后一个元素。 

列表名.remove(元素)

小苏有话说:列表元素同上,使用remove命令时,直接删除给定元素;当有多个相同元素时,删除最前面那个元素。

(4)求列表元素个数

(5)判断元素是否在列表中

(6)在列表中查找指定元素

语法格式:列表.index(元素)

(7)返回列表中指定元素个数

语法格式:列表.count(元素)

3.3.3对整个列表操作

(1)遍历列表

用for语句

# ①for语句
list = [1,2,3,4,5,6]
for num in list:
    print(num,end = ' ')

 内置函数enumerate

语法格式:enumerate(sequence,[start=0])

sequence:一个序列、迭代器或其他支持迭代的对象。

start:下标起始位置。

# ②内置函数enumerate(sequence,[0])
list = [1,2,3,4,5,6]
for i in enumerate(list):
    print(i)

 ③iter迭代器

语法格式:iter(object [ ,sentinel])

作用如下:

在第一种形式中,参数必须提供自己的迭代器,或者是一个序列。

在第二种形式中,调用可调用对象,直到它返回 sentinel。

# ③使用iter(object [,sentinel])迭代器
list = [1,2,3,4,5,6]
for i in iter(list):
    print(i,end = ' ')

 ④range函数

语法格式:range(star,end,[step])

star:计数开始位置,默认从0开始。

end:计数结束位置,但不包括end。

step:步长,默认为1。

 

# ④使用range(star,end,[step])
list = [1,2,3,4,5,6]
for i in range(len(list)):
    print(i,list[i])

 (2)列表排序

①sort方法

语法格式:列表.sort( )或列表.sort(reverse = False)        #从小到大排列

                  列表.sort(reverse = True)        #从大到小排列

②sorted方法

语法格式:sorted(列表,reverse = True/False)(降序/升序)

小苏有话说:sort方法会直接改变原来序列,sorted方法不会改变原来序列,只是生成一个新的列表副本而已。 

③reverse方法

(3)列表截取

语法格式:列表[起始位:终止位:步长]

(4)列表扩充

①“+”连接

②extend方法

语法格式:列表.extend(被添加列表) 

 

③“*”运算 

 

(5)列表复制

①“=”赋值

 

②截取 

 

③copy方法 

 

小苏有话说:方式①的两列表位置没变,说明两个列表指向同一块内存地址,称为浅拷贝;方式②和③的两列表位置变了,说明两列表分别指向不同的内存地址,称为深拷贝。 

(6)列表删除

 

(7)创建数值列表

①通过input函数

# ①通过input函数输入,输入时切记要带[]
lst = eval(input('请输入数值列表:\n'))
print(lst)

 ②list( )转换

语法结构:lst = list(range(1,11))

# ②通过list()函数转换
lst = list(range(1,11))
print(lst)

 ③利用range()和append()函数

# ③通过range()函数和append函数创建
list = []   # 新建一个空列表
for i in range(10):
    number = i**2
    list.append(number)
print(list)

 ④特殊表达式

语法格式:列表 = [循环变量表达式 for 循环变量 in rage()]

# ④按照特定表达式创建
list = [i**2 for i in range(1,11)]
print(list)

(8)简单统计学计算

最小值函数min( )、最大值函数max( )、求和函数sum( )

list = [2,34,56,8,97]
print('列表中的最小值为:',min(list))
print('列表中的最大值为:',max(list))
print('列表中的值求和为:',sum(list))


 (9)字符串与列表的转换

①list()函数

# ①通过list()转换
name1 = "张三,李四"
name2 = "Tom,Jack"
guester1 = list(name1)
guester2 = list(name2)
print(guester1)
print(guester2)

 ②split()函数

 

# ②通过split()
str = "I am student"
list = str.split()
print(list)

 3.4集合及其操作

集合:用大括号{ }括起来,元素用逗号分隔开的多个元素的无序组合。

特点:不变性:集合中的元素不可更改、元素必须是不可变数据类型。

           ②唯一性:集合中的元素是唯一的,不存在相同的元素。

           ③无序性:集合中的元素是无序的。

3.4.1集合的创建

(1)直接创建

语法格式:

Set = { 元素1,元素2,元素3,...,元素n }

# ①直接创建{}
A = {'python','123','小苏',('python','123')}
print(A)
B = {3,4,3,3,(6,8),'str',3.14}
print(B)

 (2)通过set()函数

# ②使用set()函数
s1 = set('Hello world')
s2 = set([1,2,3,2,4,5])
s3 = set((1,2,'str'))
print(s1)

 3.4.2集合间的运算

集合运算符图片

s1 = {1,2,3,4}
s2 = {4,5,6,7}
# 交集 &
r1 = s1 & s2
print('s1和s2的交集为:',r1)
# 并集 |
r2 = s1 | s2
print('s1和s2的并集为:',r2)
# 差集 -
r3 = s1-s2
r4 = s2-s1
print('s1和s2的差集为:',r3)
print('s1和s2的差集为:',r4)
# 异或集 ^
r5 = s1^s2
print('s1和s2的异或集:',r5)

 增强运算符图片

A = {'p','y',123}
B = set('pypy123')
r = A - B
print(r)
print('使用简单运算后:',A)
A |= B
print('使用增强运算后:',A)

 3.4.3集合函数的处理

(1)添加元素 s.dd(x)

(2)删除元素s.pop()

(3)查看集合元素个数

(4)成员判断

 

3.5字典及其操作

字典:是成对保存“键”(索引)与“值”(数据)的一种集合。

3.5.1字典的创建

语法格式:

方式一:字典名 = {键1:值1,键2:值2,键3:值3,...,键n:值n}

方式二:字典名 = dict(仅限包含两个元素的元组或列表)

 

 3.5.2字典的处理

(1)通过键值访问值

语法格式:字典名 [键]

 (2)通过键值访问值中的某一部分

语法格式:字典名 [键] [值的索引值]

字典处理函数1图片

字典处理函数2图片

(3)字典的更新(添加和修改)

语法结构:字典名 [键] = 值

(4)删除字典的条目

①del命令

语法格式:del 字典名 [键]

②pop方法

语法格式:字典名.pop(键,值) 或字典名.pop(键)

 ③popitem()方法

 语法格式:字典名.popitem()

④ clear和del

语法格式:字典名.clear()

                   del 字典名

 (5)查找字典中的条目

①使用成员运算符“in”

字典名.get(键,值)

3.5.3对字典的整体操作

(1)字典遍历

①遍历字典中的键

# ①遍历字典中的键
menu = {'鱼':6,'土豆丝':2,'茄子':3,'黄瓜':2,'洋葱炒蛋':4}
for key in menu.keys():
    print(key)

 ②遍历字典中的值

# ②遍历字典中的值
menu = {'鱼':6,'土豆丝':2,'茄子':3,'黄瓜':2,'洋葱炒蛋':4}
for value in menu.values():
    print(value)

 ③同时遍历字典中的键和值

# ③同时遍历字典中的键和值
menu = {'鱼':6,'土豆丝':2,'茄子':3,'黄瓜':2,'洋葱炒蛋':4}
for key,value in menu.items():
    print(key)
    print(value)

 (2)字典合并

①for 循环

# ①for循环
menu1 = {'鱼':6,'土豆丝':2,'茄子':3,'黄瓜':2,'洋葱炒蛋':4}
menu2 = {'西红柿':2,'红烧狮子头':8,'老坛酸菜':5}
for k,v in menu2.items():
    menu1[k] = v
print(menu1)

 ②update命令

语法格式:字典名.update(第二个字典命)

# ②用update命令
menu1 = {'鱼':6,'土豆丝':2,'茄子':3,'黄瓜':2,'洋葱炒蛋':4}
menu2 = {'西红柿':2,'红烧狮子头':8,'老坛酸菜':5}
menu1.update(menu2)
print(menu1)

(3)字典存储

①在列表中存储字典

# ①在列表中存储字典
item1 = {'铅笔':1,'圆珠笔':1}
item2 = {'尺子':3,'橡皮':2}
item3 = {'练习本':1,'文具盒':5}
item_total = [item1,item2,item3]
print(item_total)

在字典中存储列表 

# ②在字典中存储列表
food = {'fish':['salt','sugar','sour'],'toufu':['spicy','smelly','fragrant']}
print(food['toufu'])

 ③字典嵌套

# ③字典嵌套
sum = {
    "item1": {'铅笔':1,'圆珠笔':1},
    "item2": {'尺子':3,'橡皮':2}
}
print(sum['item1'])
print(sum['item2'])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值