不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
String(字符串)
1.字符串
Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。
str = '我是字符串'
2.字符串索引
索引值以 0 为开始值,-1 为从末尾的开始位置。
str = '我是字符串' #输出字符串中的'是' print(str[1]) #输出字符串中的'字' print(str[2])
3.字符串切片
切片是顾头不顾尾,切记
str = '我是字符串' #请输出字符串的前三位 print(str[:3]) #打印结果>>>'我是字'
4.字符串步长
str = '我是字符串' #请输出'我字串' print(str[::2])
5.一些小操作
str = '猪是我念着倒' #把字符串全部倒过来念 print(str[::-1])
2.1字符串的方法
s = 'Python' s1 = s.capitalize() # 首字母大写 print(s1) s2 = s.upper() # 全部大写 print(s2) s3 = s.lower() # 全部小写 print(s3) print(s.count('L')) # 返回字符串中有几个L print(s.endswith('x')) # 以什么结尾 print(s.startswith('a')) # 以什么开头 print(s.find('p')) #通过元素查找下标 查找的没有返回-1 print(s.index('p')) #通过元素查找下标 查找的没有就报错 print('_'.join(s)) #用_连接字符串 print(s.split('x')) #分割 print(s.strip(' a')) #脱 脱头尾两边的空格 换行符 \n print(s.replace('a','s')) #第一个放要被替换的 第二个是替换的内容 print(s.swapcase()) # 大小写转换 print(s.title()) # 特殊符号分割的每个单词首字母大写 is 系列 print(s.isdigit()) # 判断是不是纯数字 print(s.isalpha()) # 判断是不是汉字和字母
3.for循环
for 关键字 i 变量 in 关键字 要迭代的对象 冒号:
缩进for 结构体
s = '好嗨哟!' for i in s: print(i) #输出结果: 好 嗨 哟 !
练习
1.有变量name = "Python NB" 完成如下操作: name = "Python NB" 1.移除 name 变量对应的值两边的空格,并输出处理结果 s = name.strip() print(s) 2.移除name变量左边的"Py"并输出处理结果 s = name.strip('Py') print(s) 3.移除name变量右面的"NB",并输出处理结果 s = name.strip('NB') print(s) 4.移除name变量开头的a"与最后的"B",并输出处理结果 s = name.strip('aB') print(s) 5.判断 name 变量是否以 "al" 开头,并输出结果 s = name.startswith('al') print(s) 6.判断name变量是否以"NB"结尾,并输出结果 s = name.endswith('NB') print(s) 7.将 name 变量对应的值中的 所有的"y" 替换为 "p",并输出结果 s = name.replace('y','p') print(s) 8.将name变量对应的值中的第一个"y"替换成"p",并输出结果 s = name.replace('y','p',1) print(s) 9.将 name 变量对应的值根据 所有的"y" 分割,并输出结果。 s = name.split('y') print(s) 10.将name变量对应的值根据第一个"y"分割,并输出结果。 s = name.split('y',1) 11.将 name 变量对应的值变大写,并输出结果 s = name.upper() 12.将 name 变量对应的值变小写,并输出结果 s = name.lower() 13.将name变量对应的值首字母"P"大写,并输出结果 s = name.capitalize() 14.判断name变量对应的值字母"y"出现几次,并输出结果 s = name.count('y') 15.如果判断name变量对应的值前四位"y"出现几次,并输出结果 s = name.count('y',0,3) 16.从name变量对应的值中找到"N"对应的索引(如果找不到则报错),并输出结果 s = name.index('N') 17.从name变量对应的值中找到"N"对应的索引(如果找不到则返回-1)输出结果 s = name.find('N') 19.请输出 name 变量对应的值的第 2 个字符? print(name[1]) 20.请输出 name 变量对应的值的前 3 个字符? print(name[:3]) 21.请输出 name 变量对应的值的后 2 个字符? print(name[-2:])
List(列表)
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
#list python关键字 lst = [1,2,3] # 存储一些数据,数据量比较大 print(lst)
列表的增删改查
增:
lst = ['1'] lst.append('牛爱花') # 追加 在末尾的位置加一个 print(lst) lst.insert(3,'包夜') # 插入 第一个要插入的位置索引,第二个是要插入的内容 print(lst) lst.extend([1,2,3]) # 扩展 --- 迭代添加 整型和布尔值不能迭代 print(lst) lst1 = [1,2,3] lst2 = [4,5,6] lst3 = lst1 + lst2 # 列表合并 开辟了一块空间 print(lst1) print(lst2) print(lst3) 结果>>> [1, 2, 3] [4, 5, 6] [1, 2, 3, 4, 5, 6]
删:
#第一种 del lst = ['杨紫','高圆圆','刘亦菲','关晓彤'] del lst # 删除了整个列表 print(lst) del lst[-1] # 配合下标删除 print(lst) del lst[0:2] # 配合切片删除 print(lst) del lst[0:3:2] #配合步长我跳着删 print(lst) #第二种通过内容删除 lst.remove('高圆圆') # 通过内容删除 print(lst) #第三种 pop lst.pop() # 没有指定,默认删除最后一个 print(lst) ret = lst.pop(0) #可以指定下标删除 具有返回值 print(lst) print(ret) # 返回被删除的内容 #第四种 clear lst.clear() #清空 print(lst)
改:
lst = ['杨紫','高圆圆','刘亦菲','关晓彤'] lst[0] = '杨幂' # 通过下标修改 print(lst) lst[0:3] = '你好美' print(lst) # 结果 ['你', '好', '美', '关晓彤'] lst[0:4:2] = '好嗨' # 切片+步长 长度要统一 print(lst)
查:
lst = ['杨紫','高圆圆','刘亦菲','关晓彤'] for遍历 for i in lst: print(i) ret = lst.index('高圆圆') # 通过内容查找下标 print(ret) print(lst.count('高圆圆')) # 计数 lst.sort() # 排序 默认升序 print(lst) lst.sort(reverse=True) # 降序 print(lst)
reverse #翻转
列表的嵌套:
lst = [1,2,34,[45,5,['好嗨哈']]]
Tuple(元组)
一个不可修改的列表 tuple tu = () 不可变数据 有序的
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。
range
range 第一个元素是起始位置,第二个是终止位置,第三个是步长
python3 range是原生态
Python2 range是列表
dictionary(字典)
字典(dictionary)是Python中另一个非常有用的内置数据类型。
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的。
dic = {'周杰伦':'稻香','林俊杰':'江南','小沈阳':'大笑江湖','刘德华':'冰雨'} print(dic['小沈阳']) # 通过键去查找值 print(dic['刘德华']) # 通过键去查找值
结果:
大笑江湖
冰雨
字典的增删改查:
增:
# dic = {} # dic['黄秋生'] = "头文字D" #第一种 # dic.setdefault("林俊杰") #第二种 # print(dic) #返回结果: {'黄秋生': '头文字D', '林俊杰': None}
删:
dic = {"林俊杰":"江南","周杰伦":"稻香","李连杰":"黄飞鸿"} del dic["林俊杰"]#选择key来删除 dic.pop("李连杰") #删除后返回剩下的字典 dic = dic.pop("李连杰") #删除后返回,删除key对应的值 dic.popitem()#随机删除 dic.clear()#清空 print(dic)
改:
dic = {"林俊杰": "江南", "周杰伦": "稻香", "李连杰": "黄飞鸿"} dic2 = {"周星驰":"武状元苏乞儿","吴京":"战狼","甄子丹":"叶问","李连杰":"给爸爸的信"} dic.update(dic2) #把 dic2 添加到dic中,如果dic2中有dic中的值则覆盖 print(dic)
查:
dic = {"林俊杰": "江南", "周杰伦": "稻香", "李连杰": "黄飞鸿"} print(dic["林俊杰"]) #直接用key查询,如果key不存在 ,则会报错. print(dic.get("林俊杰")) #用get方法查询,如果key不存在返回None setdefault() #先看看有没有key,有的话就不执行,没有的话就执行,根据key返回值 dic.setdefault("菲欧娜","无双剑姬")#先去执行新增的流程,查询结果. print(dic)
个别小操作:
'''
1.keys()获取所有的键,这个返回的不是列表 2.values()获取所有的值 3.items()获取所有的键值对,返回的是元祖 结构,直接把元祖或者列表中的数据拿出了
''' print(dic.values()) for key in dic.keys(): print(key) print(dic[key]) print(dic.items()) #拿到的是元祖 for k , v in dic.items(): print(k) print(v)