高级变量类型
- 列表—List—类似于数组—专门存储一串信息
- 定义
- num_list = [num1, num2, num3]
- num_list[0]—0就是索引—索引又可以理解为下标
- 常用方法
list = ["zhangsan", "lisi", "wangwu"] #取值 print(list[2]) #知道数据求索引 print(list.index("wangwu")) #修改 list[2] = "sanzhang" #增加 temp_list = ["tang", "yang", "wang"] list.insert(1, "xiaomei") # 指定在索引位置插入数据 list.append("wangxiaoer") # 列表的末尾追加数据 list.extend(temp_list) # 列表后尾直接加入新的一组列表 #删除 list.remove("wangwu") # 列表中删除指定数据,如果有多个重复则只删除第一个 list.clear() # 清空列表 list.pop() # 列表中最后一项数据删除 list.pop(3) # 列表中指定删除数据的位置 del list[1] # 本质上是一个变量从一个内存中删除---一旦删除则不可再使用该变量---这是一个关键字 #统计相关 len(list) list.count("zhangsan")# 统计数据重复出现次数 # 升序 list.sort() #降序 list.sort(reverse=True) #列表反转 list.reverse()
- 方法与函数的调用区别
- 方法—要有一个对象然后才用.调用方法—对象.方法名(参数)
- 函数—要有一个导入模块而后用.调用模块中的函数—函数名(参数)
- 列表的使用场景
- 列表存储多个相同或不同类型的数据
- 通过迭代遍历在循环体内针对列表的每一项元素,执行相同的操作
- 定义
- 元组—多个元素组成的序列—与列表的不同之处在于元素不能修改
- 元组具有特定的应用场景—用于存储一串信息,数据之间使用,分隔—索引从0开始
- 定义
info_tuple = (name1,name2) tuple = ()创建空元组 type(info_tuple)输出类型 info_tuple[0]---查找对应索引所代表的数据,注意这里是[]
- 常用方法
infor = ("zhangsan", 18, 1.78) #取值和取索引 print(infor[0]) print(infor.index("zhangsan")) #统计计数 print(infor.count("zhangsan")) #统计元组中包含元素的个数 print(len(infor))
- 应用场景
- 函数的参数和返回值—一个函数可以接受多个任意参数或者一次返回多个数据
- 格式字符串—格式化字符串后面的()本质上就是一个元组
- print(“%s 的年龄是 %d” % (“xiaoming”, 18))
- 改进输出方式
info_tuple = ("xiaoming", 18, 1.80) info = "%s 的年龄是 %d, 身高为%d" % info_tuple print(info)
- 让列表不可以被修改保证数据安全
- list和tuple的区别
- 元组的定义本质上是靠逗号完成的 tuple = 1, 其实也是元组。tuple = (1, )也是元组。但如果是tuple = (1)则其实是int
- del对于元组中的多个标签会同时完成删除
- 元组倾向于存储固定不变的数据
- 元组不适合循环遍历的原因是因为,元组中存放的数据几乎都是不同类型的,循环遍历的前提是对一类型数据进行相同的操作
- 元组和列表之间的转换
- 使用list函数可以把元组转换成列表
- list(元组)
- 使用tuple函数可以把列表转换成元组
- tuple(列表)
- 使用list函数可以把元组转换成列表
- 字典—存储多个数据
- 定义
- 字典使用键值对存储数据,键值对之间使用,隔开
- 键key是索引
- 值value是数据
- 键和值之间使用:分隔
- 键必须是唯一的
- 值可以取任何数据类型,但键只能是字符串,数字,元组
xiaoming = { "name": "xiaoming", "age": 18, "gender": True, "height": 1.80 }
- 字典常用于描述个人特征信息等
- 常用方法
xiaoming_infor = { "name" : "xiaoming", "age" : 18 } #取值 print(xiaoming_infor["name"]) #添加/修改 xiaoming_infor["nation"] = "China" print(xiaoming_infor["nation"]) xiaoming_infor["age"] = 22 print(xiaoming_infor["age"]) #删除 xiaoming_infor.pop("nation") #统计键值对的数量 print(len(xiaoming_infor)) #合并键值对 tem_infor={ "height":160 } xiaoming_infor.update(tem_infor) #但是如果合并字典中存在先前的key则会导致覆盖 #清空字典 xiaoming_infor.clear()
- 字典遍历
xiaoming_infor = { "name" : "xiaoming", "age" : "18", "qq" : "1233" } # k 是每次循环拿到字典的key for k in xiaoming_infor: print("%s - %s" % (k, xiaoming_infor[k]))
- 与列表的区别
- 列表是有序的对象集合
- 字典是无序的对象集合,字典中我们更关心保存哪一类数据而不是数据保存的先后顺序,因此定义字典的顺序和print输出的键值对不一定一致
- 字典与列表的应用场景
- 使用多个键值对,存储描述一个物体的相关信息–描述更复杂的数据信息
- 将多个字典放在一个列表中,再进行遍历,在循环体内部对每个字典进行特定的操作
infor_list = [ { "name" : "xiaoming", "age" : "18", "qq" : "1233" }, { "name" : "zhangsan", "age" : "29", "qq" : "3123" } ] # card_list 是每次循环拿到的key for card_list in infor_list: print(card_list)
- 字符串—表示文本信息
- 定义
- 一对双引号和单引号都可以定义字符串
- 大多数都用双引号,在文本中本来就存在双引号时—‘my name is “HR7”’
# c 字符串的每一个字母进行输出 str = "hello world" for c in str: print(c) print(str[0]) #索引输出
- 字符串的常用操作
str = "hello world" # 统计长度 print(len(str)) # 统计某一个子字符串出现的次数 print(str.count("llo")) # 判断子字符串所在的位置---取出子字符串首字母位置 print(str.index("llo")) # 取索引方法 # 判断字符串是否 只 包含空格---\t\r\n也是空格 print(str.isspace()) # 判断字符串中只包含数字 print(str.isdecimal()) # 开发的大多数使用这个方法 print(str.isdigit()) # 可以判断阿拉伯数字和unicode字符串---不能用键盘直接输入的数字(1) print(str.isnumeric()) # 可以判断汉字的数字---判断数字范围更大 # 上面三个都不能判断小数 # 检查字符串是否以指定字符串开头 str.startswith("hello") # 检查字符串是否以指定字符串结尾 str.endswith("world") # 查找指定字符串---读取索引位置 str.find("llo") # 与index不同---如果指定字符串不在,index会报错,find返回-1 # 将字符串中的old_str替换成new_str,如果num指定,则替换不超过num次 new_str = str.replace(old_str, new_str, num=string.count(old)) #该方法不会修改原有字符串的样式,会返回一个新的字符串 # 三种文本对齐方法 str.ljust(width) # 返回一个原字符串左对齐,并用空格填充至长度为width的新字符串 str.rjust(width) # 返回一个原字符串右对齐,并用空格填充至长度为width的新字符串 str.center(width) # 返回一个原字符串居中,并用空格填充至长度为width的新字符串 # 去除字符串空白字符 str.lstrip() # 删除字符串开始的空白字符 str.rstrip() # 删除字符串结尾的空白字符 str.strip() # 字符串的拆分和链接 str.split(str="", num) # 以str为分隔符拆分old_str,如果num有指定值,则仅分隔num+1 # 使用str指定分隔符拆分成为一个列表,str包括\r\n\t 分隔符.join(seq) # 以指定分隔符将seq中所有元素合并成为一个新的字符串 # 需求 # 1.将字符串中的空白字符全部去掉 # 2.再使用空格作为分隔符拼接成一个整齐的字符串 str = "num1\tnum2\tnum3\t\nnum4\t" print(str) # 拆分 list = str.split() print(list) # 新合并 new_str = " ".join(list) print(new_str)
- 切片操作详解—适用于字符串、列表、元组
-
切片使用索引值来划分范围
-
列表和元组都是有序集合,可以通过索引值来得到对应数据
-
字典是一个无序集合,使用键值保存数据
-
切片相关物理关系图如下所示
-
字符串的切片方式
- 字符串[开始索引:结束索引:步长]
-
需要注意的是切片并不包含结束索引所对应的值
-
切片本质区间是一个左闭右开的范围
-
步长为正则向右切,步长为负则向左切
-
一个例子
str = "0123456789" # 截取从2-5位置的字符串 task = str[2:6] print(task) # 截取从2-末尾的字符串 task = str[2:] print(task) # 截取从开始-5位置的字符串 task = str[:6] print(task) # 截取完整字符串 task = str[:] print(task) # 从开始位置,每隔一个字符截取字符串 task = str[::2] print(task) # 从索引1开始,每隔一个字符截取一个 task = str[1::2] print(task) # 截取从2-末尾 -1 的字符串 task = str[2:-1] print(task) # 截取字符串末尾两个字符 task = str[-2:] print(task) # 字符串逆序 task = str[-1::-1] print(task)
-
- 定义
- 公共方法—列表、元组、字典、字符串都可以使用的方法
- py的内置函数—不用import就可以使用的函数
- define list = [1,2,3]
- len(item)—计算容器中元素的个数 len(a)
- del(item)—删除变量 del(a[1])
- max(item)—返回容器中最大值 max(a)
- min(item)—返回容器中最小值 min(a)
- cmp(item1,item2)—比较两个值, -1小于 0等于 1大于
- 字符串符合的规则 “0”<“A”<“a”
- 切片使用索引值来确定范围,列表元组都是集合可以通过索引值获得对应数据,字典是一个无序集合使用键值对保存数据—因此字典不能切片
- 运算符
- 加号就是拼接,乘号就是重复—适用于字符串、列表、元组但字典不可以使用
- 加号会产生新的变量而extend方法是直接修改原始数据结构的结果
- in是验证元素是否存在—3 in (1,2,3)—适用于字符串、列表、元组、字典
- not in 同上
- 各种大小比较符用于元素的比较—适用于字符串、列表、元组
- 加号就是拼接,乘号就是重复—适用于字符串、列表、元组但字典不可以使用
- 完整的for循环语法
for 变量 in 集合: 循环体代码 else: 没有通过break退出循环,循环结束后,会执行代码,只有for中完全遍历才能执行else中的code
- py的内置函数—不用import就可以使用的函数