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))

posted @ 2019-08-06 17:43  石斛  阅读(379)  评论(0编辑  收藏  举报