Python基础01 基本数据结构(上)
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 % value print(x)
笔记:
模板字符串:用string模块里的Template
from string import Template a = Template('would it be the ${key1} when we meet in ${key2}') print(a.substitute(key1='same', key2='heaven'))
# 此部分代码来源:https://www.cnblogs.com/xiaxiaoxu/p/9744228.html
%b 二进制整数
%s 字符串 %c 字符,将整数解读为Unicode码点 %d 十进制(整数)%u 无符号整数 %o 八进制整数 %x 十六进制整数 %X 十六进制整数大写 %e 使用科学计数法来表示小数,用e表示指数 %E 与e相同,但用E表示指数 %f 将小数表示为定点数 %g 自动在%f和%e做出选择。这是默认用于小数的说明符,默认情况下至少有1位小数 %G 与g相同,但使用大写来表示指数和特殊值
% 将数表示为百分比值%% 文字%
2、format
描述:方法format 变量.format(参数):'{page!r:10 }'.format( )
'{page!r:10 }'的组成部分:字段名page,字段名可以为标识符或者索引,即字段名可以是指定值或者指定值的某个值。
转换标志!r,跟在 ! 后面的单个字符,包含 r , s , a。转换标志使对象按照指定的类型的字符串
格式说明符:10,跟在 :h 后面的表达式,信息包含;显示字符,字段宽度,数的精度,格式类型
from math import pi print("{pi:<+010.2f}".format(pi=pi)) # 对齐方式 < ,添加标志 + ,显示字符:0, 字段长度:10,数的精度:10, 格式类型:f print("{pi!s},{pi!r},{pi!a}".format(pi='π'))
笔记:
1、{{,}} 可以转义输出 {,}
2、字符串的格式化要设置格式的值可以放在字典中,条件是字段名都是包含在字典中的键
y = {'a': 'b', (1, 2): 'c', 42: 'age'} print('would it be the {a}'.format_map(y)) print('would it be the {42}'.format_map(y))