day3 笔记

Python字典及基本操作

如果单纯使用两个列表来保存某组数据,则无法记录两组数据之间的关联关系,为了保存具有映射关系的数据,Python 提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为 key;另一组数据可通过 key 来访问,被称为 value。形象地看,字典中 key 和 value 的关联关系如图 1 所示:

 由于字典中的 key 是非常关键的数据,而且程序需要通过 key 来访问 value,因此字典中的 key 不允许重复。程序既可使用花括号语法来创建字典,也可使用 dict() 函数来创建字典。实际上,dict 是一种类型,它就是 Python 中的字典类型。在使用花括号语法创建字典时,花括号中应包含多个 key-value 对,key 与 value 之间用英文冒号隔开;多个 key-value 对之间用英文逗号隔开。

 

 

 字典包含多个 key-value 对,而 key 是字典的关键数据,因此程序对字典的操作都是基于 key 的。基本操作如下:

  • 通过 key 访问 value 。

     

     

  • 通过 key 添加 key-value 对。
  •  

     

  • 通过 key 删除 key-value 对。
  • pop方法用来获得对应于给定键的值,然后将这个键值对从字典中移除

  • 通过 key 修改 key-value 对。

字典的常用用法

get()方法

get() 方法其实就是根据 key 来获取 value,它相当于方括号语法的增强版,当使用方括号语法访问并不存在的 key 时,字典会引发 KeyError 错误;但如果使用 get() 方法访问不存在的 key,该方法会简单地返回 None,不会导致错误。例如如下代码:

 

 

 

update()方法

update() 方法可使用一个字典所包含的 key-value 对来更新己有的字典。在执行 update() 方法时,如果被更新的字典中己包含对应的 key-value 对,那么原 value 会被覆盖;如果被更新的字典中不包含对应的 key-value 对,则该 key-value 对被添加进去。例如如下代码:

 

 

 items()用于获取字典中的所有 key-value 对、所有 key、所有 value。返回 dict_items对象,Python 不希望用户直接操作这几个方法,但可通过 list() 函数把它们转换成列表。如下代码示范了这个方法的用法:

 

 

 python中元祖的用法

元组(tuple):小括号定义元祖,存储任意类型数据,但其内数据不可变。元组不可变,其内的列表中的元素可以变。元祖只有一个值时,要加逗号,代码不想被人修改,就定义元祖。

1、元祖数据不能被修改

 

 2、遍历循环

可以使用for循环实现元组的遍历

 

 

 

pytnon 中字符串的常用方法

 

count:字符出现次数

 

 index、find:下标,可以指定位置找,find 可以找字符串下标

 

 

 

 去空格的 3 种用法:

strip()方法:去除字符串前后(左右侧)的空格或特殊字符

 

 lstrip()方法:去除字符串前面(左侧)的空格或特殊字符

 

 rstrip()方法:去除字符串前面(右侧)的空格或特殊字符 

 

 

s.split()分割字符串,默认每个词之间换行符或者空格分割、\n,也可以指定字符串进行分割,如果指定分割的元素不存在,分隔符不会报错,会不进行分割直接当成一个字符串

a.join():用来连接 list 里面的每个元素的

 

切片:list范围取值的一种方式,切片时顾头不顾尾

 

 如果为负数的,取值的时候从右往左开始取值,同时步长应为负数print(l[-1:-3:-1])

下面了解
# format:字符串格式化
# upper:所有变成大写
# lower:所有变小写
# zfill:补 0 的,如 12 补 4 位就是 0012
# isdigie:判断字符串是否是纯数字
# endswith:判断是以什么结尾的
# stratswith:判断已什么开头的
# center:字符串居中,位数不够还可以用指定字符串补齐,如 100 个居中用==补齐
# 就是字符换放中间已指定字符串补齐:==100 个==
# title:检查标题是否大写
# isspace:校验传入字符串是否全部都是字符串
# islowe:是判断否全部都是小写
# isupper:判断否全部都是大写

深拷贝、浅拷贝

数字和字符串中的内存都指向同一个地址,所以深拷贝和浅拷贝对于他们而言都是无意义的,对于字典 元组 和列表来说,进行浅拷贝和深拷贝时,内存的地址是不同的,

浅拷贝只会拷贝内存中的第一层数据

 

 而对于深拷贝来说将会把所有数据重新创建,当不想改变被拷贝的值时 应该使用深拷贝

 

 非空即真,非 0 即真

1,非空即真(只要有内容就是true)
例:

name=input('请输入名称').strip()
if name=='':
    print('name不能为空')
#输入的name去掉空格,如果为空,提示'name不能为空'。

#把这个例子改成非空格式。名字非空,提示正确。名字是空,提示错误。


方式一:

name=input('请输入名称').strip()
if name!='':
    print('输入正确')
else:
    print('name不能为空')

方式二:
name=input('请输入名称').strip()
if name:  #效果和方式一一样。非空即真,所以只要输入非空的内容就是真,就打印输入正确。
    print('输入正确')
else:
    print('name不能为空')

 

空,包括以下类型的空:
a='' 空字符串
l=[] 空list

t=() 空元组
d={} 空字典
b=None 例如函数的返回值none

 

2,非零即真(只要不是0就是true)
name=input('请输入名称').strip()
name=int(name) #例如输入1,可以转成整型,非零,为真,提示正确。输入0,转成整型为0,为假提示错误
if name:
    print('输入正确')
else:
    print('name不能为空')

操作文件

 

# 遇到路径打开时,前面要加'r'防止其他字符转义
# open('a.txt')三种模式:w(写) r(读) a(追加)
# 如果文件有中文的话要加 encoding='utf-8'
# f=open('上课练习','r',encoding='utf-8')
# result=f.read()
# 1、可读全部
# 2、不可写
# 3、只读全部以 list 列表形式
# 4、只读一行
#
# 课练习','r',encoding='utf-8')
# result=f.write()
# 1、不可读
# 2、可写
# 3、写了以后,会把之前的内容覆盖掉
# 4、用writelines:不会覆盖掉内容,但必须是 str 格式的
# a (追加)模式
# 1、不能读,只能写
# 2、文件不存在,可以创建新的文件
# 3、文件存在,直接在文件末尾添加

 

文件指针seek的使用
python中可以使用seek()移动文件指针到指定位置,然后读/写。通常配合 r+ 、w+、a+ 模式,在此三种模式下,seek指针移动只能从头开始移动,即seek(x,0) 。

 

 

seek(x,0):表示指针从开头位置移动到x位置

 seek(x,1):表示指针从当前位置向后移动x个位置

 seek(-x,2):表示指针从文件结尾向前移动x个位置

例:file.seek(-1,2),文件指针从文件末尾向前移动一个字符,配合read相关方法/函数可读取该字符。

 

 

 

 

1,非空即真(只要有内容就是true)
例:

name=input('请输入名称').strip()
if name=='':
    print('name不能为空')
#输入的name去掉空格,如果为空,提示'name不能为空'。

#把这个例子改成非空格式。名字非空,提示正确。名字是空,提示错误。


方式一:

name=input('请输入名称').strip()
if name!='':
    print('输入正确')
else:
    print('name不能为空')

方式二:
name=input('请输入名称').strip()
if name:  #效果和方式一一样。非空即真,所以只要输入非空的内容就是真,就打印输入正确。
    print('输入正确')
else:
    print('name不能为空')

 

空,包括以下类型的空:
a='' 空字符串
l=[] 空list

t=() 空元组
d={} 空字典
b=None 例如函数的返回值none

 

2,非零即真(只要不是0就是true)
name=input('请输入名称').strip()
name=int(name) #例如输入1,可以转成整型,非零,为真,提示正确。输入0,转成整型为0,为假提示错误
if name:
    print('输入正确')
else:
    print('name不能为空')

操作文件

 

# 遇到路径打开时,前面要加'r'防止其他字符转义
# open('a.txt')三种模式:w(写) r(读) a(追加)
# 如果文件有中文的话要加 encoding='utf-8'
# f=open('上课练习','r',encoding='utf-8')
# result=f.read()
# 1、可读全部
# 2、不可写
# 3、只读全部以 list 列表形式
# 4、只读一行
#
# 课练习','r',encoding='utf-8')
# result=f.write()
# 1、不可读
# 2、可写
# 3、写了以后,会把之前的内容覆盖掉
# 4、用writelines:不会覆盖掉内容,但必须是 str 格式的
# a (追加)模式
# 1、不能读,只能写
# 2、文件不存在,可以创建新的文件
# 3、文件存在,直接在文件末尾添加