Python基础01 基本数据结构(上)
一、概述
Python基本数据结构包含以下几种类型:字符串,列表,元组,字典,集合。Python支持一种数据结构的基本概念,名为容器。容器基本上就是可包含其他对象的对象。两种主要的容器是序列(列表、元组)和映射(字典)。集合是既不是序列也不是映射的容器。
1、字符串是一种重要的Python内置序列,具有序列基本操作(索引、切片、相乘、长度和最大(小)值)。字符串是不能修改。
2、Python常用的序列:列表和元组,
列表是一种常用的Python内置序列,具有序列基本操作(索引、切片、相乘、长度和最大(小)值)。列表是可以更改的,如中途增加元素。
元组:是一种常用的Python内置序列,具有序列基本操作(索引、切片、相乘、长度和最大(小)值)。元组是不能修改的。
3、字典是通过名称来访问其各个值的数据结构,这种数据结构称为映射。字典包含键和值,键的类型包含数(整数,浮点数),字符串和元组等任何不可变的类型(键不可以是列表)。
二、序列的基本操作
1、索引,序列中的所有元素都有一个编号,Python语言当中第一个元素的索引为0。通过正数索引时,Python从左往右数获取对应编号的元素值;通过负数索引,Python从
右往左获取对应编号的元素值。
nun[0]
2、切片,通过索引访问特定范围的数据元素。指定范围包含第一个索引对应元素值,第二个索引为切片后剩余元素中的第一个元素的编号,所以第二个索引的元素值不包含在切片中。
num[2:-1] # 包含num[2],不包含num[-1](最右边的元素值)
num[2:] # 包含num[2]到最右边的元素值
num[:-1] # 包含num[0]到num[-2]的元素值
num[:] # 包含整个序列
num[1:10:2] # 切片步数为2
3、相乘,将序列与n相乘,是重复序列n次来创建一个新的序列
[2,3] * n
4、成员资格检查,检查序列中是否包含给定值,或者检查字典中是否包含给定的键。成员资格检查使用布尔运算符 in
5 in range(10)
5、内置函数获取序列的长度和最大(小)值
print(len([1, 2])) #使用函数len返回序列包含的元素个数
print(max([1, 2])) #使用函数max返回序列最大值
print(min([1, 2])) #使用函数min返回序列最小值
笔记:
1、字符串和序列是通过索引访问各个值,而字典通过名称(键名)访问各个值
2、字典成员资格检查查找的键而不是值,而列表成员资格检查是直接查找值而不是索引
3、容器,容器是包含其他对象的对象。容器是一种数据结构的基本概念
4、内置函数 list(实际是一个类) 可以使用任意序列作为参数。字符串作为 list 参数时,可以将字符串转化为字符列表;通过内置函数 join 可以将字符列表转化为字符串。
5、内置函数 tuple 将任意序列作为参数,并将其转换为元组返回,如果又来的序列就是元组,则原封不动返回该元组。
语法1-字符串方法、列表方法、字典方法
字符串类型的数据具有以下方法,对象可以通过 “对象.方法” 调用方法。内置函数 dir 返回参数的属性、方法列表。
通过print(dir(str))输出字符串类型的数据的内置方法:
有点奇怪的是代码:import string print(dir(string)) 显示的内置方法如下:string是一个模块
列表的内置方法 print(dir(list))
元组的内置方法 print(dir(tuple))
字典的内置方法 print(dir(dict)),dicr是所有字典所属的类型。
笔记:
1、方法sort有两个参数:key,reverse;key为排序依据。参数key设置为一个自定义函数 x.sort(key = 函数名),提高排序的灵活性;参数reverse决定sort是降序(reverse = ture)还是升序(reverse = false)
语法2-基本的列表操作、基本的元组操作、字典操作
基本的列表操作
1、修改列表,给列表赋值
num[0] = 2
2、删除列表元素
del num[0] = 2
3、切片赋值
num = ['p','o','l','y']
num[1:] = list('ython')#输出 ['p','y','t','h','o','n']
基本的元组操作
元组不可以修改,所以元组的操作除创建元组和访问元组,可执行操作不多。
创建一个只包含一个值的元组:
42,
(42,)
#以上两种方式都可以创建一个只包含一个只的元组(42,)
三、字典操作
创建字典
1、以两个花括号 {}b表示,里面包含的键和值用:分隔。键的类型包含数(整数,浮点数,当值相等时表示同一个键),字符串和元组(元组里面的元素需要是字符串和数等不可变的元素,不能是列表或者字典等可变的元素)等任何不可变的类型(键不可以是列表)。
x = (['a'], 42)print(x)
y= {'a': 'b', (1, 2): 'c', 42: 'age'}print(y)
z= {'a': 'b', ([1], 2): 'c', 42: 'age'}print(z)
2、函数 dict
函数 dict 可以从其他映射或者键-值对序列创建字典
items1 = [('number', 2)] # 键-值对,如果items1 = ['number', 2]就会出bug
d=dict(items1)print(d)
items2= dict(numbers='2')print(items2)
items3= dict(numbers=2)print(items3)
3、字典方法 copy 和 fromkeys
dict.formkeys(seq[,val]):键来自序列,而值为val(默认为 None)
y = x.copy(),浅复制
语法3-设置字符串的格式
1、%
描述:转换说明符(如%s)指出要将设置的值插入哪个位置,s意味着将按字符串进行格式设置。
语法:指定字符串(格式字符串) % 指定要设置其格式的值
foo = 'hello,%s.%s are you!'value= ('pony', 'how')print(foo %value)print(foo)
x= foo %valueprint(x)
笔记:
模板字符串:用string模块里的Template
from string importTemplate
a= Template('would it be the ${key1} when we meet in ${key2}')print(a.substitute(key1='same', key2='heaven'))