Python【day 15】基本数据类型-int str bool list
'''''' ''' 1 python的定义 是一门弱类型的解释性的高级编程语言 这里的高级是相对低级(例如:汇编语言等) 高级编程语言和低级编程语言的区别 1、前者更接近于人的理解--字母组成的语法 2、后者更接近于计算器的理解--字节码、二进制 2 python的特点 人生苦短,我用python 简洁 3 为什么学习python 爱好,人工智能,机器学习,大数据 4 python第一个程序 print('hello world') 方式1:在cmd中输入python后,在交互命令行,输入上述语句,enter 方式2:在本地d盘新建一个hello.py的文件,将上述语句复制到.py文件中,保存后 在cmd中,进入到d盘, 执行命令 python hello.py 方式3:将上述语句写入pycharm后,run 5 变量的概念 变量是程序运行过程中产生的中间值--temp(暂存属性,开辟一个内存空间,用于保存值) 1、内存空间的名字就是变量的名字 2、内存空间保存的值就是变量的值 比如: a=10 变量名字就是a 变量的值是10 6 变量的命名规则: 1、组成:数字、字母、下划线组成 2、开头:不能是数字开头 3、关键字:不能是关键字,比如:list 4、长度:不要太长 5、中文:不要是中文 6、有意义:要有意思(一看名字,就知道变量大概表示的意思) 7、大小写:严格区分大小写 8、写法:推荐下划线或者驼峰法命名 下划线:hello_world(单词之间,下划线分隔开) 驼峰法:helloWorld (首字母不大写,第二个单词开始,首字母大写) 7 变量的数据类型 1 int 整数 + - * / // bit_length() 2 str 字符串 1、表示方式 ' " \''' \""" 注意点:这里的\ 表示转义 1 单引号'' 2 双引号"" 3 三个单引号 ''' ''' 4 三个双引号 """ """ 2、* 重复 3、+ 拼接 4、%s 格式化 5、索引和切片 s1[start:end:step] 左闭右开 1 start 起始索引号-下标 2 end 结束索引号-下标 (取不到) 3 start 步长(不写,默认是1) 6、常见内置方法 1 upper() 转换成大写字母 2 strip() 去掉字符串两端的空白 strip('ab') 去掉字符串两端的'ab' 3 replace(old,new,count) 参数3 count表示从左到右替换的次数 参数3不写,默认是全部替换 4 split() 把字符串拆分成几个子字符串,每个子字符串作为列表的元素,返回的是列表 默认分隔符是空格 split('_') 分隔符是下划线 5 '_'.join() 把参数iterable中的字符串通过连接符'_'拼接成字符串 写法: '连接符'.join(iterable) 注意点: 1 iterable中的元素必须是str,而不能是int 2 join不是字符串的内置方法 6 startswith() 写法:s1.startwith('a') 作用:判断字符串是否以字母'a'开头 7 find index count 写法:s1.find('a') 作用:从字符串s1中查找字符‘a’,返回索引号;如果找不到,就返回-1 --更健壮 推荐 写法:s1.index('a') 作用:从字符串s1中查找字符‘a’,返回索引号;如果找不到,就报错 写法:s1.count('a') 作用:从字符串s1中统计字符'a'出现的次数,返回出现的次数int 如果是0次,代表没有找到(也有查找的功能) 8 isdigit() 写法:s1.isdigit() 作用:判断字符串是否是数字形式的,是的话,返回True 9 len() 写法:len(s1) 作用:返回字符串的长度 7、字符串是iterable for i in s1: 循环体(break continue) else: pass 8、字符串的编码方式 1 ascii 8位 1个字节 2 gbk 国标码 gb2312 16位 2个字节 3 unicode 万国码 32位 4个字节 4 utf-8 可变的unicode 1 英文字符 8位 1个字节 2 欧洲字符 16位 2个字节(德文、法文、西班牙文等字符) 3 中文字符 24位 3个字节 字符串编码后变成字节bytes 编码-加密-压缩 字节解码后变成字符串 解码-解密-解压 bytes.decode() #解码 3、bool 布尔类型 取值:True False 作用:用于判断的 类型转换: False:0或者空('' [] () {} set() None) 空字符串、空列表、空元组、空字典、空集合、空None 注意:空格、\r \n \t都是True True:除了上面的,其他都是True 注意点:类型转换False可以直接用于判断 备注: 例子1 content1 = input('请输入你的名字:') #输入的是字符串 if content1: #判断空 如果不输入内容,直接回车,就提示-你没有名字 注意点:和下面行的结果不一样 # if content1 == '': #如果不输入内容,直接回车,就打印-你的名字是 print('你的名字是 ',content1) else: #如果你什么都没有输入,这个content1就是空字符串 print('你没有名字') 例子2 li1 = [1,2,3] if li1: #这里就是在判断列表是否为空, 和下面行等效 # if li1 == []: print(li1) else: # print('空列表') 4、列表 list 表示:[],元素之间是逗号隔开 概念:列表是一个容器,可以存放任意数据类型 和其他开发语言的数组array类似 特点: 1、列表是可变的 2、列表由索引和切片功能 常见操作: 1 增 1 append(元素值) 在列表最后面追加元素 2 insert(i,元素值) 在列表指定位置前插入元素 3 extend(iterable) 把iterable中的元素依次添加到原列表 2 删 1 pop() 参数不写,默认是删除最后一个元素 参数也可以指定索引号,来删除 2 remove 删除指定的元素值 3 del 切片或者单个删除 4 clear 清空元素 3 改 1 按照索引-下标修改 切片修改 单个索引号修改 4 查 1、单个索引号取值 2、for循环遍历 01列表-增加元素小结 1 append是末尾追加新元素--最常用 2 insert是指定位置前插入新元素 3 extend是将iterable中元素依次添加到原列表 02列表-删除元素小结 1 pop 不带参数,默认删除列表最后一个元素,并且获取到被删除的最后一个元素 指定参数,删除指定位置-索引号的元素,并且获取到被删除的指定位置的元素 2 remove 参数:元素值(不是位置) 作用:删除指定元素值 3 del 1 参数:单个位置-索引号 写法:del 列表(位置) 作用:删除单个位置的元素 2、参数:切片 写法:del 列表(切片) 作用:切片删除多个位置的元素 3、参数:列表名 写法:del 列表名 作用:删除整个列表,回收内存空间(和清空clear是不同的) 4、参数:字典的key 写法:del 字典名[key] 作用:删除字典中指定key对应的键值对 综上,del的作用 1、可以删除单个位置的元素 2、可以切片删除多个元素 3、可以删除整个列表,回收内存空间 4、不仅是列表,也适用于字典 4 clear 参数:为空 写法:li1.clear() 作用:清空列表的元素,变成空列表 清空-列表的内存空间没有被回收(和del li1不一样) 03列表-修改元素小结 1 单个位置修改--单个元素修改 写法:li3[1] = 'james' 作用:指定位置-索引号进行列表单个元素的修改 2、切片多个元素修改 1 2个元素改成1个元素 正确写法:li3[1:3] = ['james'] 错误写法:li3[1:3] = 'james' 注意点 2 2个元素改成2个元素 写法:li3[1:3] = ['james','kevin'] 3 2个元素改成3个元素 写法:li3[1:3] = ['james','kevin','lucy'] 04列表-查询元素小结 1 单个查询-单个取值-按照单个位置-索引号-下标 2 多个查询-多个取值-按照切片 3 全部查询-全部取值-for循环遍历 5、其他常见操作 1 count() 计数 计算某个元素在列表出现的次数 2 index() 查找 返回某个元素在列表中的位置-索引号-下标 3 sort() 排序 把列表的元素进行排序,默认升序,列表本身修改了 4 reverse()反转 把列表的元素反转,列表本身修改了 6、列表在循环遍历的过程中,不能删除元素,因为涉及到元素的移动 解决办法: 把要删除的元素,添加到新的列表中,循环新列表,删除老列表 7、深浅拷贝和赋值 1、= 赋值,两个变量指向同一个内存地址,不同的变量只是同一个内存地址的不同别名 2、浅拷贝,只拷贝第一层(第二层及以上还是指向同一个内存空间,没有实现拷贝) li1.copy() li1[:] 检验是否是一个内存空间的办法:看变量的id值 3、深拷贝,不仅拷贝第一层,第二层及以上都拷贝 li1.deepcopy() 扩展:在其他的编程语言(比如:java),叫做克隆,也分为深浅克隆 浅拷贝和深拷贝的类比 1、浅拷贝是第一层内存空间分开,第二层及以上内存空间是同一个 --第一层独立,第二层及以上是一变都变 第一层就是家庭夫妻财务AA 第二层就是家庭夫妻设立的共同账户 2、深拷贝是第一层内存空间分开,第二层及以上内存空间也分开--每层完全独立 类比:家庭夫妻财务完全AA,没有设立共同账户 8、列表推导式 写法 [结果 for循环 if判断] 例子: li7 = [1,2,3] #需求:将列表中的奇数,变成其平方数 li8 = [i*i for i in li7 if i%2 == 1 ] print(li8) #[1, 9] '''