Python学习(四)
知识回顾:
(1)、Python中变量分为数字型和非数字型
数字型:int.float,bool,complex
非数字型:字符串、列表、元组、字典
(2)、在Python中,所有的非数字型变量都有以下的特点:
- 都是一个**序列**,可以理解为**容器**
- **取值**:[]
- **遍历**:for in
- 计算长度,最大值,最小值,比较,删除
- **链接**:+ 和 **重复**:*
- 切片
一、列表
1、列表的定义
列表变量名 = [内容,中间用逗号,同一个列表可以储存不同类型的数据]
2、列表的常见操作
name_list = ["zhangsan","lisi"]
#取值
print(name_list[0])
#取索引
print(name_list.index("lisi"))
#修改
name_list[0] = "wangwu"
#增加值
#append函数向末尾增加
name_list.append("zhangsan")
#insert函数向指定位置增加
name_list.insert(0,"wangmazi")
#extend函数将另一个列表的值完全加入
tmp_list = ["tangseng","sunwukong"]
name_list.extend(tmp_list)
print(name_list)
#删除数据
#remove方法删除确定的值
name_list.remove("tangseng")
#clear方法删除列表中的所有值
name_list.clear()
#pop方法在默认的时候删除列表中最后一个元素,有参数的时候删除指定索引的值并且返回该值
name_list.pop()
name_list.pop(0)
#使用del关键字,删除指定的数据
#del关键字的本质是将数据从内存中删除,一般不建议使用
del name_list[0]
#列表 统计(函数)
#len可以统计列表中元素的个数
l = len(name_list)
#count方法可以统计某一个数据在列表中出现的次数
c = name_list.count("lisi")
#列表排序
num_list = [6,8,4,1,10]
#升序排序
num_list.sort()
name_list.sort()
#降序
num_list.sort(reverse=True)
#逆序反转
num_list.reverse()
#循环遍历列表
for name in name_list:
print(name,end=" ")
列表的循环遍历:
语法:
for 循环内部使用的变量 in 列表
for in是在Python中为了提高列表的遍历效率,专门提供的迭代iterator遍历。
与C、Java等语言相同,在使用遍历器遍历的过程中不能进行删除,否则会导致结果不正确,例如下面所示:
#方法一
num_list = [1,90,80,8,9,2]
#删除10以内的数
for num in num_list:
if num>=0 and num<=10:
num_list.remove(num)
print(num_list)
#方法二
tmp_list = [1,90,80,8,9,2]
result = [] #注意Python中变量申明的同时必须赋值,才会创建该变量
for num in tmp_list:
if num>=0 and num<=10:
result.append(num)
print(result)
for num in result:
tmp_list.remove(num)
print(tmp_list)
结果:
结果分析:
使用方法一,在遍历的过程中删除,应该是导致了迭代器的混乱,所以不能直接删除。
正确的打开方式应该是将需要删除的数据先存到一个列表中,然后再进行删除!
列表操作方法总结:
3、区分关键字、函数、方法
(1)、关键字:是Python内置的,具有特殊意义的标识符,查看Python的关键字的方法为:
import keyword
print(keyword.kwlist)
#关键字使用的后面不需要使用括号
(2)、函数封装了独立的功能,可以直接调用。
函数名(参数)
(3)、方法
方法和函数类似,同样是封装了独立的功能。
方法需要通过对象来调用,表示针对这个对象要做的操作。
对象.方法名(参数)
二、元组
1.元组的定义
定义:
(1)、用于储存一串信息,数据之间用逗号隔开
(2)、元组用()定义
(3)、元组的索引从0开始
(4)、元素不能修改
创建空的元组
name = ()
元组中只包含一个元素的时候,需要在后面加上逗号
name = (5,)
2、元组的基本操作
info_tuple = ("zhangsan",18,1.75)
#取值和取索引
print(info_tuple[0])
print(info_tuple.index("zhangsan"))
#count统计一个数据再元组中出现的次数
print(info_tuple.count("zhangsan"))
#len函数统计元组中数据的个数
print(len(info_tuple))
#循环遍历
for my_info in info_tuple:
print(my_info)
注意:虽然元素可以for in遍历,但是因为元组可以有很多类型的数据,所以在格式化输出的时候比较复杂,因此很少使用。
3、元组的使用场景
(1)、函数的参数和返回值
(2)、格式字符串,在print函数的格式化输出的时候括号的参数就是一个元组
print("%s 的年龄是 %d 身高是 %.2f" % ("肖战",28,1.83))
tmp_str = "%s 的年龄是 %d 身高是 %.2f" % ("肖战",28,1.83)
print(tmp_str)
(3)、让列表不可以被修改,以保护数据安全
4、列表和元组之间的转换
why:
如果希望列表被保护,不被修改
操作:
#列表变为元组
tuple(列表)
#元组变为列表
list(元组)
三、字典
1、定义
(1)、字典是除列表之外Python之中最灵活的数据类型
(2)、字典可以用来存储多个数据,通常用于存储描述一个物体的相关信息
(3)、和列表的区别:列表是有序的,字典是无序的,也就是说使用Print进行输出的时候可能与定义的顺序是不同的,但是好像Python3.7以上顺序是固定的
(4)、字典使用{}进行定义
(5)、字典是键值对:
键key是索引
值value是值
键和值之间用冒号隔开,不同的对之间都好
键不能重复
值可以是任意的数据类型,但键只能使用字符串、数字或者元组
2、基本用法
xiaoming = {"name":"xiaoming"}
#取值,取值的时候如果key不存在那么就会报错
print(xiaoming["name"])
#增加修改值
#key存在就是修改
#key不存在就是增加
xiaoming["age"] = 18
xiaoming["name"] = "xm"
#删除,删除指定的key
#如果key不存在,那么会报错
xiaoming.pop("name")
#统计键值对的数量
print(len(xiaoming))
#合并键值对
#如果被合并的字典中有相同的键值对,那么会覆盖原来的键值对,update么
tmp = {"name":"xiaoming"}
xiaoming.update(tmp)
#清除
xiaoming.clear()
print(xiaoming)
#循环遍历
for k in xiaoming:
print(xiaoming[k])
3、应用的场景
(1)、使用字典存储一个物体的全部信息
(2)、将多个字典组合成一个列表使用
例如:
info_list = [{"name":"xiaoming",
"num":1,
"age":18},
{"name":"lisi",
"num":2,
"age":19},
]
for person in info_list:
print(person)
四、字符串
1、定义
可以使用单引号和双引号,但是如果字符串内容有单引号,那么用双引号定义;如果字符串内容有双引号,那么用单引号定义。
2、字符串基本操作
1、类型判断
2、查找替换
3、大小写转换
4、文本对齐
5、去除空白字符
6、拆分和连接
常见方法:
hello_str = "hello python"
#统计字符长度
len(hello_str)
#统计某个字符串出现的次数
hello_str.count("llo")
#子串出现的位置
#如果该子串没有出现,那么就会报错
hello_str.index("llo")
#判断字符只由空格和空白字符(\n,\t,\r)
tmp = " \n\t\r"
tmp.isspace() #输出True
#判断字符串中是否值包含数字,但是都不能判断小数
num_str = "1"
print(num_str.isdecimal())
print(num_str.isdigit())
print(num_str.isnumeric())
#判断字符串是否以指定字符串开头
hello_str.startswith("hello")
#判断字符串的结束
hello_str.endswith("python")
#查找指定字符串,返回索引
#两者之间的区别是,index如果指定字符串不存在那么报错,find返回-1
hello_str.find("llo")
hello_str.index("llo")
#替换字符串
#replace(被替换,替换)
#replace执行之后会返回一个新的字符串,但是不会修改原字符串的内容
hello_str.replace("python","world")
空白字符:
\n,\t,\r(回车)
3、字符串切片
切片方法适用于字符串、列表、元组,这三个都是有序的,都可以通过下标取值。
切片的方法:
字符串[开始索引:结束索引:步长]
需要注意的一点是,Python中字符串下标为-1代表的是最后的一个字符,-2代表的是倒数第二个字符
步长是从当前字符开始计算的,也就是本身这个字符也是在计算范围内的
注意:
(1)、索引的范围是左闭右开
(2)、从头开始,开始索引数字可以省略,冒号不能省略
(3)、到末尾结束,结束索引数字可以省略,冒号不能省略
(4)、步长默认为1,如果连续切片,数字和冒号都可以省略
例子:
num_str = "0123456789"
#输出所有的偶数
print(num_str[::2])
#输出所有的奇数
print(num_str[1::2])
#使用切片的方法将字符串倒序
#注意这里的就表示倒序,然后-1表示向左切片
print(num_str[-1::-1])
print(num_str[::-1]) #is ok
开学前辛苦营业的一天
来源:https://blog.csdn.net/qq_43326818/article/details/99707502