python基础数据类型
数字
没啥可说的,不可变类型
布尔值
各种数据类型的布尔值:
数据类型 | 数字 | 字符串 | 列表 | 字典 | 元组 | 集合 |
True | 非0 | 非空 | 非空 | 非空 | 非空 | 非空 |
False | 0 | 空 | 空 | 空 | 空 | 空 |
字符串
- 索引
要点:下表是位置-1,从0开始
- 切片
语法:s[开始:结束:步长]
a = 'ABCDEFGHIJK' print(a[0:3]) print(a[2:5]) print(a[0:]) #默认到最后 print(a[0:-1]) # -1 是列表中最后一个元素的索引,但是要满足顾头不顾腚的原则,所以取不到K元素 print(a[0:5:2]) #加步长 print(a[5:0:-2]) #反向加步长
- 字符串方法
s='sdds' # s.strip() #去除两边的空格(默认,可以执行去除的东西,lstrip和rstrip为左右去除) # s.replace() #将...替换为... # s.upper() #全体大写 # s.lower() #全体小写 # s.capitalize() #首字母大写 # s.swapcase() #大小写反转 # s.isdigit() #数字判断,返回布尔值 # s.isalnum() #数字/字母判断,返回布尔值 # s.isalpha() #字母判断,返回布尔值 # s.startswith() #以...开头,返回布尔值 # s.endswith() #以...结尾,返回布尔值 # s.count() #出现次数计数 # s.find() #...是否存在,存在返回第一次匹配到的下标,反之返回-1 # s.index() #...是否存在,存在返回第一次匹配到的下标,反之报错 # s.split() #以...分割,形成一个列表 str————list转化
注:因为字符串是不可变类型,所以执行字符串方法只是产生了新的字符串,需要变量接收或者print
- 格式化输出
res = ('%s%d'%('sks',12)) #占位符式 res = '{} {} {}'.format('egon',18,'male') #format式(推荐) res = '{1} {0} {1}'.format('egon',18,'male') res = '{name} {age} {sex}'.format(sex='male',name='egon',age=18)
列表
- 切片
列表的切片和字符串原理相同
- 增删改查
list = [1,2,3,4] #增 list.append(111) #增加到最后 list.insert(0,55) #按照索引位置添加 list.extend([1,2,3]) #将可迭代对象循环添加 list.extend('asdas') #删 list.pop(1) #按照索引删除,可以接收返回值 del list[2] #可以按照索引删除,也可以切片删除,没有返回值 list.remove(3) #按照元素去删除 list.clear() #清除列表 #改 list[2] = 'sss' #直接根据索引改 list[1:3] = ['asd','a'] #切片改 #查 #切片或者循环去查 #方法 list.count() #计数 list.index('s') #返回第一个匹配到的索引值,和字符串用法一样,但是列表没有find方法 list.sort() #排序 list.reverse() #列表反转
由于列表是可变类型,所以执行增删改一类的方法后列表直接发生了变化,不需要返回值接收。
字典
字典是可变类型的,但是key必须是不可变类型的
dict = {'k1':'v1','k2':'v2','k3':'v3'} #增 dict.setdefault('k3','v4') #增加,如果已有不会更改或覆盖 dict.setdefault('k4') #不写值默认为none #删 dict.pop('k3') #删除键值对,返回值 dict.pop('k4','none') #如果没有相应的key则返回后边的自定义值,没有自定义值报错 del dict['k1'] #删除相应键值对,没有返回值 dict.popitem() #随机删除某个键值对,返回值是元组 #改 dict['k1'] = 'aaa' #根据key直接赋值改 dict.update(dict2) #将另一个字典覆盖添加到dict,有改,没有添加 #查 print(dict['k1']) #根据key直接查 dict.get('k1','aaa') #有则返回值,没有返回给定值,没有给定值则返回none #方法 dict.items() #dict_items([('k3', 'v3'), ('k2', 'v2'), ('k1', 'v1')]) dict.keys() #dict_keys(['k1', 'k2', 'k3']) dict.values() #dict_values(['v3', 'v2', 'v1']) #字典循环 for key in dict: #k1,k2,k3 print(key) for item in dict.items(): #('k1','v1') ('k2','v2') ('k3','v3') print(item) for value in dict.values(): #v1,v2,v3 print(value) for key,value in dict.items(): #k1 v1 k2 v2 k3 v3 print(key,value)
集合
集合是无序不重复的,集合本身是可变类型,但集合的元素必须是不可变类型的
set1 = {1,2,4} #使用大括号表示集合,set()创建空集合,不能用{},这是空字典 set2 = set() #增 set2.add('sss') set2.update('asd') #迭代添加 #删 set1.remove('sss') #删除一个指定元素 set1.pop() #随机删除一个元素 set1.clear() #清空集合 del set1 #删除集合 set1 & set2 #交集 set1 | set2 #并集 set1 - set2 #差集 set1 ^ set2 #反差集 set1.issubset(set2) #判断set1是不是set2的子集 set1.issuperset(set2) #判断set1是不是set2的超集 s = frozenset('batty') #创建不可变集合
数据类型的总结
按存储空间划分:
数字
字符串
集合:无序,即无序存索引相关信息
元组:有序,需要存索引相关信息,不可变
列表:有序,需要存索引相关信息,可变,需要处理数据的增删改
字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删改
按存值个数划分:
标量/原子类型:数字,字符串
容器:列表,元组,字典
按可变不可变划分:
可变:列表,字典
不可变:数字,字符串,元组,布尔值