02 python 要点(容器部分开始)

第6章 容器类型的数据

Python内置的数据类型如序列(列表、元组等 )、集合、字典等可以容纳多项数据,我们称它们为容器类型的数据。

6.1 序列简介

序列(sequence)是一种可迭代的、元素有序的容器类型的数据, 包括列表(list)、字符串(str)、元组(tuple)、字节序列(bytes)等。

6.1.1 序列的索引操作

序列中的元素都是有序的,每一个元素都带有序号,这个序号叫作索引。索引有正值索引、负值索引之分,正值索引为左到右,从(0 – > N-1)(比如单词)。

list= [1, 2, 2, 4]
len(list)  # len()  用于获取序列的长度
6.1.2 加和乘操作

加(+)和乘()运算符也可以用于序列中的元素操作。加(+)运算符可以将两个序列连接起来,乘()运算符可以将两个序列重复多次。

6.1.3 切片操作

序列的切片(Slicing)就是从序列中切分出小的子序列。

lst = [1, 2, 3, 6, 2]
lst[0:2]     # [1, 2]    # 使用“冒号”做切片操作   
'''切片运算符的语法形式为[start:end:step].   其中,start是开始索引,end是结束索引,step是步长.
切片时获取的元素的间隔,可以为正整数(0开始),也可以为负整数,反向切片时列表顺序会进行颠倒, 步长设置为-1时,元素顺序会颠倒. 
切下的小切片包括start位置的元素,但不包括end位置的元素.'''
6.1.4 成员测试

成员测试运算符有两个:in、not in,in用于测试是否包含某一个元素,not in用于测试是否不包含某一个元素。

6.2 列表

列表(list)是一种可变序列类型,我们可以追加、插入、删除、替换列表中的元素。

6.2.1 创建列表

创建列表有两种方法:

list1 = list([10,20,30,10,20,50])   # list(iterable)函数:参数iterable是可迭代对象(字符串、列表、元组、集合和字典等)
list2 = [10,20,30,10,20,50]         # [元素1,元素2,元素3,⋯]:指定具体的列表元素,元素之间以逗号分隔。
[i*i for i in range( a , b )]       # 列表的生成公式
lst = [],   lst1 = list()           # 空列表的创建
6.2.2 追加元素

列表是可变的序列对象,列表可以追加元素。

lst = [1, 2, 5, 3]
lst.append(4)  # 在列表中追加单个元素时,可以使用列表的append(x)方法。   
lst += [6, 7]  # 在列表中追加多个元素时,可以使用加(+)运算符或列表的extend()方法。 
lst.extend([8, 9])   # 结果:[1, 2, 5, 3, 4, 6, 7, 8, 9]
6.2.3 插入元素
lst = [1, 2, 5, 3]  # 想向列表中插入元素时,可以使用列表的list.insert(i,x)方法.
lst.insert(1, 9)    # 结果: [1, 9, 2, 5, 3]  其中,i指定索引位置,x是要插入的元素.
6.2.4 替换元素
lst = [1, 2, 5, 3]  # 想替换列表中的元素时,将列表下标索引元素放在赋值符号(=)左边,进行赋值即可.
lst[2] = 100        # 结果: [1, 2, 100, 3]
6.2.5 删除元素
lst = [1, 2, 5, 3, 2]   # 想在列表中删除元素时,可使用列表的list.remove(x)方法,如果找到匹配的元素x,则删除该元素.
lst.remove(2)   # 结果: [1, 5, 3, 2]   # 如果找到多个匹配的元素,则只删除第一个匹配的元素.
lst.pop(2)      # 结果: [1, 5, 2]  # X.pop() 根据索引移除元素,移除的某个位置的元素. 
lst[1:2] = []   # 结果: [1, 2]     # 用切片的方式进行替换.
del(lst)        # 结果: name 'lst' is not defined  # del()命令,直接删除列表.
6.2.6 查询元素位置
lst = [1, 2, 5, 3, 2]  # index() 可以查询元素的位置.
lst.index(5)   # 结果: 2  # 列表不可以使用find函数进行查询,字符串可以用 find 和 index
'''如果有多个元素只能输出第一个元素的位置,
可以在指定区间查找, index中可以指定start 和 stop'''
6.2.7 列表元素的排序操作
lst = [1, 2, 5, 3, 2]
lst.sort(cmp=None, key=None, reverse=False)  # 语法  [1, 2, 2, 3, 5] 
'''参数解析:
cmp :可选参数, 如果指定了该参数会使用该参数的方法进行排序。
key : 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素.
reverse :排序规则,reverse = True 降序, reverse = False 升序(默认)'''

# 调用内置函数sorted(),可以指定reverse=True,进行降序排序,原列表不发生改变    
new_list = sorted(lst,reverse = True)    # [5, 3, 2, 2, 1]  

# 可以通过关键字进行排序
6.2.8 获取列表中的元素
lst = [1, 2, 5, 3, 2]
lst[1: 4]     # 正向索引  从0到 N-1   # [2, 5, 3]
lst[-3: -1]   # 逆向索引 从-N 到-1    # [5, 3]
lst[-1: -4: -1]  # 获取反向列表       # [2, 3, 5]
lst[3]   # 获取某个列表某个位置的值的方法,直接在后面加上[]及其位置  # 结果: 3

6.3 元组

元组(tuple)是一种不可变序列类型,不可以执行替换操作。

6.3.1 创建元组

创建元组时有两种方法:

tup=tuple(('python','world',36))   # tuple(iterable)函数:参数iterable是可迭代对象(字符串、列表、元组、集合、字典等)      (注意后面为双括号)
tup = (1, 2, 3, 5)   # (元素1,元素2,元素3,⋯):指定具体的元组元素,元素之间以逗号分隔。对于元组元素,可以使用小括号括起来,也可以省略小括号
tup = ('python',)    # 只包含一个元组的元素需要使用逗号和小括号, 没有逗号时直接会将元组内部值赋值给变量
print(type(tup))     # type() 查看变量类型  # <class 'tuple'>
t1 = ()              # 空元组的两种创建方式
t2 = tuple() 
6.3.2 元组拆包

创建元组,并将多个数据放到元组中,这个过程被称为元组打包,
与元组打包相反的操作是拆包,就是将元组中的元素取出,分别赋值给不同的变量。

a,b,c,d=1,2,3,4   # 解包赋值, 
6.3.3 元组的遍历
tup = (1, 2, 5, 3, 2)     # enumerate: 枚举
for i in tup:      # 可以使用for循环进行遍历 
'''enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中,enumerate()是python的内置函数,默认序号为从0开始计数'''
for index,item in enumerate(coffee_name):    # 前面的index为输出的序号

6.4 集合

集合(set)是一种可迭代的、无序的不能包含重复元素的容器类型的数据。

6.4.1 创建集合
set_1 = set([1, 2, 4, 5])    # set(iterable)函数:参数iterable是可迭代对象(字符串、列表、元组、集合和字典等)
set_1 = {1, 2, 3, 5}         # {元素1,元素2,元素3,⋯}:指定具体的集合元素,元素之间以逗号分隔。对于集合元素,需要使用大括号括起来。
set_1 = set()     # 空集合的创建   
{i*i for i in range(a, b)}   # 集合的生成公式
6.4.2 修改集合

修改集合类似于修改列表,可以向其中插入和删除元素。修改可变集合有如右所示的常用方法。

set_1 = {1, 2, 3, 5} 
# 集合的新增操作:
set_1.add(9)      # add(elem):添加元素,如果元素已经存在,则不能添加,不会抛出错误。  # {1, 2, 3, 5, 9}
set_1.update({4, 6, 8})  # update( ):添加多个元素   # {1, 2, 3, 4, 5, 6, 8, 9}
set_1.remove(4)    # remove(elem):删除元素,如果元素不存在,则抛出错误。  # {1, 2, 3, 5, 6, 8, 9}
set_1.discard(5)   # discard:一次删除一个指定元素,如果指定的元素不存在不抛异常  # {1, 2, 3, 6, 8, 9}
print(len(set_1))  # 可以使用len()统计集合内部元素的多少    # 6
set_1.pop()     # pop( ):一次只删除一个任意元素     # {2, 3, 6, 8, 9}
set_1.clear()   # 清除集合。   # set()
del(set_1)      # 可以使用del 进行删除集合

集合的数学操作:

s1 = {1, 2, 3, 5} 
s2 = {2, 3, 4, 6}
print(s1.intersection(s2))  # 求两个集合的交集 print(s1 & s2)  # {2, 3}
print(s1.union(s2))         # 求两个集合的并集 print(s1 | s2)  # {1, 2, 3, 4, 5, 6}
print(s1.difference(s2))    # print(s2 - s1) 求两个集合的差集  # {1, 5}
print(s1.symmetric_difference(s2))   # 求集合的对称差集, print(s1 ^ s2)  # {1, 4, 5, 6}
6.4.3 判断操作
in / not in          # 判断集合中是否存在该元素
6.4.4 集合间的关系
s1 = {2, 4} 
s2 = {2, 3, 4, 6}
print(s2.issubset(s1))    # False  # 一个集合是否是另一个集合的子集,可以调用方法issubset进行判断  
print(s2.issuperset(s1))  # True   # 一个集合是否是另一个集合的超集,可以调用方法issuperset进行判断 
print(s2.isdisjoint(s1))  # False  # 两个集合是否没有交集,可以调用方法isdisjoint进行判断     
6.4.5 set集合

基本特点:(1) 无序性 (2) 确定性 (3) 不重复性, set( ) 实质:内部进行 可迭代性的 for 循环.
在python3中按数据类型的可变与不可变大致分为如下几种类型,前面已经介绍了另外几种了。今天讲讲set。
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)
python中,用set来表示一个无序不重复元素的序列。set的主要作用就是用来给数据去重
可以使用大括号 { } 或者 set() 函数创建集合,但是注意如果创建一个空集合必须用 set() 而不是 { },因为{}是用来表示空字典类型的.

6.5 字典

字典(dict)是可迭代的、通过键(key)来访问元素的可变的容器类型的数据,字典是一个无序的序列
字典由两部分视图构成:键视图值视图。键视图 (key,类似索引,可以只含数字)不能包含重复的元素,值视图能(values 类似存储空间)。在键视图中,键和值是成对出现的。
字典、列表、集合都是可以增、删、改可变序列,元组为不可变序列

6.5.1 创建字典
dic = dict(name='jack',age = 20)  # dict()函数   # {'name': 'jack', 'age': 20}
dic =  {'key1':'value1', 'key2': 'value2'}  # 指定具体的字典键值对,键值对之间以逗号分隔,最后用大括号括起来。
dic = {}      # dict   空字典的创建 , 设置为集合需要 set1 = set({})
dic = dict()  # dict 
6.5.2 修改字典

字典可以被修改,但都是针对键和值同时操作的,对字典的修改包括添加、替换和删除。

scores['张三'] = 63   # 通过'[]'进行新增操作,如果已存在就执行修改动作
scores.pop('王麻子')  # 使用字典中”pop”的方法删除
scores.clear()       # 通过‘clear’清空字典 
del scores['张三']   # 通过‘del’命令进行删除某元素,同时删除其键和值  
6.5.3 访问字典视图

我们可以通过字典中的三种方法访问字典视图。

scores = {'李四': 30, '张三': 90}
items = scores.items()       # items():返回字典的所有键值对视图。 # dict_items([('李四', 30), ('张三', 90)])
keys = list(scores.keys())   # keys():返回字典键视图。   # ['李四', '张三'] 
values = scores.values()     # values():返回字典值视图。   # dict_values([30, 90])
6.5.4 获取字典中的元素
scores = {'李四': 30, '张三': 90}
print(scores['李四'])   # []如果字典中不存在指定的key,抛出keyError异常。  # 30
print(scores.get('王六',96))  # get( )方法取值,如果字典中不存在指定的key,并不会抛出KeyError而是返回None,可以通过参数设置默认的value(如举例里的96),以便指定的key不存在时返回。     # 96
print('张三' in scores)  # True  # 通过‘in’和‘not in’判断是否存在该元素,只会对前面的键进行判断,与后面的值无关
6.5.6 字典元素的遍历
scores = {'李四': 30, '张三': 90}
print(scores['李四'])  # print(scores.get(items))  # 输出字典的'values'值     # 30
print(items)  # 输出字典的 'key'值, items是关键字列表
6.5.7 字典生成第三种方式
dic = zip(items,prices)    # 内置函数 ‘zip’ 
b = {items:prices for items,prices in zip(items, prices)}  # 方式二

第7章 字符串

eval()   # 将“input”输入的函数直接转换为真实的数据类型
round(a,x)  # 数学函数进行四舍五入,其中a是对象,x是四舍五入保留小数,count()统计元素数量
count()  # 函数, 统计字符串里某个字符出现的次数。可以选择字符串索引的起始位置和结束位置。 
str.count("char", start,end)  # 或 str.count("char")    # -> int    返回整数     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值