高级变量类型
数据类型 分为 数字型 非数字型
非数字型变量:
数据类型详细
List 列表
最频繁使用的数据类型,在其他语言中通常被称为 数组
作用:使用一个变量,存储多个数据。
name_list = ['zs', 'ls', 'ww']
print(name_list)
[‘zs’, ‘ls’, ‘ww’]
拿第一个数据
name_list = ['zs', 'ls', 'ww']
print(name_list)
print(name_list[0])
[‘zs’, ‘ls’, ‘ww’]
zs
列表 一个大格子,里面多个小格子,取出数据,要根据小格子编号进行读取,编号从0开始
列表的操作
针对列表有11个操作:
例子:
取值:
举例子
name_list[0]
取索引
输出 数据的 位置
name_list = ['zs', 'ls', 'ww']
print(name_list)
print(name_list.index('zs'))
[‘zs’, ‘ls’, ‘ww’]
0
修改
name_list = ['zs', 'ls', 'ww']
print(name_list)
name_list[0] = '我'
print(name_list)
[‘zs’, ‘ls’, ‘ww’]
[‘我’, ‘ls’, ‘ww’]
增加
append
最后面添加数据
name_list = ['zs', 'ls', 'ww']
print(name_list)
name_list.append('王小二')
print(name_list)
[‘zs’, ‘ls’, ‘ww’]
[‘zs’, ‘ls’, ‘ww’, ‘王小二’]
insert
指定索引位置插入数据
name_list = ['zs', 'ls', 'ww']
print(name_list)
name_list.insert(0, '王小二')
print(name_list)
[‘zs’, ‘ls’, ‘ww’]
[‘王小二’, ‘zs’, ‘ls’, ‘ww’]
extend
将后面的数组批量添加到第一个数组末尾
name_list = ['zs', 'ls', 'ww']
print(name_list)
a = ["追加1", '追加2', '追加3']
name_list.extend(a)
print(name_list)
[‘zs’, ‘ls’, ‘ww’]
[‘zs’, ‘ls’, ‘ww’, ‘追加1’, ‘追加2’, ‘追加3’]
删除数据
remove
clear
pop 弹
remove
删除指定数据
name_list = ['zs', 'ls', 'ww']
print(name_list)
a = ["追加1", '追加2', '追加3']
name_list.extend(a)
print(name_list)
name_list.remove('追加1')
print(name_list)
[‘zs’, ‘ls’, ‘ww’]
[‘zs’, ‘ls’, ‘ww’, ‘追加1’, ‘追加2’, ‘追加3’]
[‘zs’, ‘ls’, ‘ww’, ‘追加2’, ‘追加3’]
pop
默认删除列表中最后一个元素
name_list = ['zs', 'ls', 'ww']
print(name_list)
a = ["追加1", '追加2', '追加3']
name_list.extend(a)
print(name_list)
name_list.pop()
print(name_list)
[‘zs’, ‘ls’, ‘ww’]
[‘zs’, ‘ls’, ‘ww’, ‘追加1’, ‘追加2’, ‘追加3’]
[‘zs’, ‘ls’, ‘ww’, ‘追加1’, ‘追加2’]
pop指定删除元素索引
name_list = ['zs', 'ls', 'ww']
print(name_list)
a = ["追加1", '追加2', '追加3']
name_list.extend(a)
print(name_list)
name_list.pop(0)
print(name_list)
[‘zs’, ‘ls’, ‘ww’]
[‘zs’, ‘ls’, ‘ww’, ‘追加1’, ‘追加2’, ‘追加3’]
[‘ls’, ‘ww’, ‘追加1’, ‘追加2’, ‘追加3’]
clear
清空元组列表
name_list = ['zs', 'ls', 'ww']
print(name_list)
a = ["追加1", '追加2', '追加3']
name_list.extend(a)
print(name_list)
name_list.clear()
print(name_list)
[‘zs’, ‘ls’, ‘ww’]
[‘zs’, ‘ls’, ‘ww’, ‘追加1’, ‘追加2’, ‘追加3’]
[]
del
del本质上是将该变量从内存中删除
del xxx[n]
name_list = ['zs', 'ls', 'ww']
print(name_list)
a = ["追加1", '追加2', '追加3']
name_list.extend(a)
print(name_list)
del name_list[0]
print(name_list)
[‘zs’, ‘ls’, ‘ww’]
[‘zs’, ‘ls’, ‘ww’, ‘追加1’, ‘追加2’, ‘追加3’]
[‘ls’, ‘ww’, ‘追加1’, ‘追加2’, ‘追加3’]
总结:
统计
name_list = ['zs', 'ls', 'ww']
print(name_list)
a = ["zs", '追加2', '追加3']
print(len(name_list))
print(name_list.count('zs'))
[‘zs’, ‘ls’, ‘ww’]
3
1
list统计列表中元素个数
.count统计某个元素出现的个数
排序
列表.sort()
升序-默认
name_list = ['zs', 'ls', 'ww']
num_list = [2, 5, 6, 1, 7, 3, 6, 5]
print(name_list)
print(num_list)
name_list.sort()
num_list.sort()
print(name_list)
print(num_list)
[‘zs’, ‘ls’, ‘ww’]
[2, 5, 6, 1, 7, 3, 6, 5]
[‘ls’, ‘ww’, ‘zs’]
[1, 2, 3, 5, 5, 6, 6, 7]
降序
name_list = ['zs', 'ls', 'ww']
num_list = [2, 5, 6, 1, 7, 3, 6, 5]
print(name_list)
print(num_list)
name_list.sort(reverse=1)
num_list.sort(reverse=1)
print(name_list)
print(num_list)
[‘zs’, ‘ls’, ‘ww’]
[2, 5, 6, 1, 7, 3, 6, 5]
[‘zs’, ‘ww’, ‘ls’]
[7, 6, 6, 5, 5, 3, 2, 1]
关键字 函数 方法 区别
使用关键字 不用小括号
使用函数 和 方法 需要使用 小括号
关键字 是 表示特殊含义的字符,在使用的时候,不需要使用括号
函数 和 方法 在使用时候,都得使用括号、有时候需要在括号内部使用参数
方法针对的是对象
循环遍历
遍历:从头到尾,依次,从列表中取数据
迭代遍历:重复遍历,重复从列表中拿出一个又一个元素。
使用for进行迭代遍历
name_list = ['zs', 'ls', 'ww']
for i in name_list:
print(i)
zs
ls
ww
顺序从列表中,依次获取数据,每次循环中,数据都会保存在i这个变量中,在循环体内部可以访问到当前这一次获取到的数据。
for i in 列表变量:
print i
列表应用场景
列表存储相同类型的数据
通过迭代遍历,在循环体内部,针对每一项元素,执行相同的操作。
但是注意 python中的列表是可以存储不同类型的数据的。
比如:
name_list = ['zs', 'ls', 'ww', 1, 1.75]
for i in name_list:
print(i)
但这种情况是极少极少情况才会遇到的!!!
元组
多个元素组成
元素不能修改
索引同样从0开始
元组使用()定义,列表使用[]定义
元组一旦定义完成,不能进行修改(增删改)
可以保存不同类型的数据
拿元素
tuple = ('zs', 18, 18.5)
print(tuple[0])
zs
定义元组时需要注意,定义只包含一个元素的元组!!! a = (xx, ) 在元素后接,
取索引
已经知道数据的内容,希望知道数据在元组中的索引
tuple = ('zs', 18, 18.5)
print(tuple.index("zs"))
0
统计计数
tuple.count('zs')
len(tuple)
原理同list
遍历元组
tuple = ('zs', 18, 18.5)
for i in tuple:
print(i)
元组中,保存的数据类型,通常是不同的
元组的应用场景
定义函数的参数
函数的返回值
格式字符串
让列表不可被修改,保护数据安全。
a = ("小喵", 21, 1.85)
print("%s 年龄 是 %d 身高是%.2f" % a)
列表和元组之间转换
字典
最灵活的数据类型
用来存储无序的数据类型
{}
字典 有 key 和 value
键值对 保存数据
键:获取信息
值:保存信息
通常用于 描述某一个物品的信息
例子:
取值
xiaoming = {"name": "小喵"}
print(xiaoming['name'])
小喵
新增 & 修改
xiaoming = {"name": "小喵"}
xiaoming['age'] = 12
print(xiaoming)
xiaoming = {"name": "小喵"}
xiaoming['age'] = 12
print(xiaoming)
xiaoming['name'] = '小小米'
print(xiaoming)
删除
pop指定key删除
xiaoming = {"name": "小喵"}
xiaoming['age'] = 12
print(xiaoming)
xiaoming.pop('age')
print(xiaoming)
统计 键值对 个数
xiaoming = {"name": "小喵"}
xiaoming['age'] = 12
print(len(xiaoming))
合并字典
update
xiaoming = {"name": "小喵"}
x = {"age": 12, "gender": 1}
xiaoming.update(x)
print(xiaoming)
注意如果合并的键值对相同key,后面的会覆盖前面的key
清空字典
clear()
xiaoming = {"name": "小喵"}
print(xiaoming)
循环遍历字典
xiaoming = {"name": "小喵", "age": 21, "gender": "female"}
for i in xiaoming:
print(i)
name
age
gender
xiaoming = {"name": "小喵", "age": 21, "gender": "female"}
for i in xiaoming:
print(xiaoming[i])
小喵
21
female
应用场景
一个字典中,存储某个对象的多个属性
把多个字典放在一个 列表中,进行存储,用的时候进行遍历
card_list = [
{"name": "joe",
"qq": 123,
"phone": 12312},
{"name": "kitty",
"qq": 234,
"phone": 34324}
]
for i in card_list:
print(i)
{‘name’: ‘joe’, ‘qq’: 123, ‘phone’: 12312}
{‘name’: ‘kitty’, ‘qq’: 234, ‘phone’: 34324}
字符串
一对双引号 or 单引号 都可以定义一个字符串
str1 = "hello python"
str2 = "我的外号是 大西瓜"
获取字符串中的元素
str1 = "hello python"
str2 = "我的外号是 大西瓜"
print(str2)
print(str1[6])
我的外号是 大西瓜
p
for循环取出字符串中字符
str2 = "我的外号是 大西瓜"
for i in str2:
print(i)
统计字符串个数
print(len(str1))
print(str1.count('h'))
取出字符所在位置
str1 = "hello python"
print(str1.index('h'))
0
字符串的相关方法
is判断类型方法总结:
大小写转换:
判断字符串是否为空
str1 = "hello python"
str2 = " \t\n\r" # \r表示回到行首
print(str1.isspace())
print(str2.isspace())
数字判断
print(str2.isdecimal())
print(str2.isdigit())
print(str2.isnumeric())
从上到下,判断标准越来越宽泛
替换 和查找
str1 = "hello python"
str2 = "1.5\t\n\r" # \r表示回到行首
print(str1.startswith("hello"))
print(str1.endswith("on"))
print(str2.find("5")) # 返回数据的索引位置
# find方法,查找的字符串不存在会返回 -1,index方法查找,不存在会报错
# print(str2.index("123"))
print(str2.find("123"))
# 替换hello为hi
print(str1.replace("hello", "hi"))
文本对齐
案例:
登鹳雀楼对齐
poem = ["登鹳雀楼",
"王之涣",
"白日依山尽,",
"黄河入海流。",
"欲穷千里目,",
"更上一层楼。"]
for i in poem:
print('|%s|' % i.center(10, " "))
# print('|%s|' % i.rjust(10, " "))
| 登鹳雀楼 |
| 王之涣 |
| 白日依山尽, |
| 黄河入海流。 |
| 欲穷千里目, |
| 更上一层楼。 |
去重空白字符
从网上爬取的文章,会存在不规则,需要去除空格
poem = ["\t\n登鹳雀楼",
"王之涣",
"白日依山尽,\t\n",
"黄河入海流。",
"欲穷千里目,",
"更上一层楼。"]
for i in poem:
# 使用strp方法去除字符串中的空白
i = i.strip()
print('|%s|' % i.center(10, " "))
拆分和连接
poem_str = "\t\n登鹳雀楼\t王之涣\t白日依山尽\t\n黄河入海流\t欲穷千里目\t\r\t更上一层楼。"
list = poem_str.split()
print(list)
a = "\n".join(list)
print(a)
字符串的切片
切片 使用 索引值 来限定范围,从大的 字符串中 切出 小的 字符串
列表 和 元组 都是i游戏集合 通过索引 可以获取到 对应的数据
字典 是 无序 结合 使用 键值对 保存数据
指定 开始索引 结束索引 步长
举例子:
截取 2-5数字
截取 2到最后一个数字
截取 开始到数据5
截取 完整字符串
每隔1个字符,截取一次
截取 倒数第一个字符
截取 最后两个字符
截取出倒数 字符串