python基础之数据类型
1、字符串(str):不可变对象
str1=”abc” str2=”123”
(1) 字符串拼接以及格式化:
-
第一种:直接使用加号相加 str1+str2 结果为abc123
-
第二种:使用乘号 str1*3 结果为 abcabcabc (字符串与数字之间、可以用 乘号、表示若干个字符串)
-
第三种:int类型的6 想拼接到str1b,使用str() 如:str1+str(6) 结果->abc6
-
第四种:使用format、{}作为占位符 如 :“{}{}”.format(str1,6) 结果为abc6 (格式化方法一)
-
第五种:使用f加{} 如 f”{str1}6” 结果为 abc6 (格式化方法二)
- 第六种:使用%,如 "%s%d%s%f" %("我今年",18,"岁",0.6) 结果为:我今年18岁0.600000 (格式化方法三)s是字符串 d是整数 f是浮点数(默认小数点后6位)
(2) 字符串的转义符:
-
第一种:如\n换行符、直接在前多加一个\,如:”abc\\n”
-
第二种:用正斜杠替代反斜杠、如“abc/n”
-
第三种:直接在字符串前面加r,它会把引号的内容全部当作普通字符 ,如 r”da\ncd\t”
(3) 字符串的下标:str1=“好好学习,天天向上”
-
第一种:正向(从左往右)是0到n 如str1[0] 是“好”
-
第二种:反向(从右往左)是从-1开始 如 str1[-1] 是 “上”
(4) 字符串的切片:str1=“好好学习,天天向上”
-
公式:str1=[起始站,终止值] :左闭右开即包含左边不包含右边
-
步长为正数时:起始值 < 终止值(即从左到右取)、如str1[2:4:1] 或者 str1[-7:-5:1] 结果都为“学习”
-
步长为负数时:起始值 > 终止值(即从右到左取)、如str1[3:1:-1] 或者 str1[-6:-8:-1] 结果都为“习学”
-
举例:str1[:] 表示正向全取
-
str1[::-1]:负向全取,结果为 “上向天天,习学好好”
2、列表(list):
list1=[1,”hello”,{“age”:18},1.68] list2=[1,’a’]
(1) 列表的添加:
-
append():把元素添加到列表最后如 list2.append(6) 结果为list2=[1,“a”,6]
-
Insert(位置下标,值):把元素插入到列表的指定位置 如 list2.insert(0,“yhr”)结果为list2=[“yhr”,1,‘a’]
-
位置下标为负数时、如 list2.insert(-1,“test”) -----结果为 list2=[1,“test”,‘a’] 总结:不管下标是正数还是负数、都是把原该下标的值往右边挤
-
extend():两个列表相拼接、这里是列表噢,如list2.extend([2,3])最后结果为list2 =[1,‘a’,2,3] ;还有一个特例就是参数是字符串时、会把这个字符串先拆成一个列表、再拼接、如 list2.extend(“hi”)结果为 list2=[1,‘a’,‘h’,‘i’]
(2) 列表的删除:list1=[1,2,3,4,2,3]
-
pop():括号内不填写参数时、表示删除列表的最后一个元素
-
有参数时,参数是列表的下标 如 list1.pop(1) 结果为list1=[1,3,4,2,3]
-
remove():删除列表的具体值、如果该值在列表中有多个、只删除找到的第一个如 list1.remove(2),结果为list1=[1,3,4,2,3]
-
del list[1] 删除列表中下标为1的元素
(4) 列表的修改:
- 直接根据列表下标、重新赋值就可以了、如list1[1]=“yhr”结果为list1=[1,“yhr”,3,4,2,3]
(5) 列表的切片:格式 [起始值:终止值:步长] 左闭右开
-
与字符串的切片一样
-
切片生成的是新列表、哪怕切片全取、相当于浅拷贝
-
列表的浅拷贝:只拷贝列表的第一层 copy模块的copy() 方法
-
列表的深拷贝:拷贝列表的所有层、copy模块的deepcopy()方法
-
普通的赋值:如
list2=list1 既不是浅拷贝也不是深拷贝,相当于一个快捷方式、两个列表指向的是同一个内存地址【根据id()内置函数可查看内存地址、如id(list2)】
3、元组(tuple):不可变对象
tuple1=(“a”,123,[1,2,3])
(1) 元组定义:
-
元素放到小括号内、且必须要有一个逗号,一个元素时 如(10,)
-
如果元组中的元素是可变对象,那么我们可以修改它的值,如tuple1[2][0]=“yhr”结果为 tuple1=(“a”,123,[“yhr”,2,3])
4、布尔表达式(bool):
(1) 使用:
-
布尔型:True、False (一般True表示1、False表示0)
-
=表示赋值,==表示判断恒等 如 1==2结果为False; 2**3==8结果为True
-
“aA”>“aA” 结果为True 、(字符串中先比较第一位、如果能得出结论就不再比较第二位了,如在这里a的阿斯克码为97 ,A的阿斯克码是65。97>65已得出结论、所以不会再比较第二个字符了)
-
20 in [10,[20,30]] 结果为False 因为这里20是子列表的元素。记住一句话 “父亲的老婆不是你老婆”
-
and和or 逻辑运算符 and 所有条件都要满足结果为True, or 其中一个条件为真结果就为True
-
优先级 not>and>or
-
isinstance(实例,类):一个内置函数、用来判断某个实例是否属于某个类 如isinstance(“abc”,str) 结果为True
5、字典(dict):
dict1={“name”:“张三”,12:99,“age”:[1,2,3]}
(1) 字典概念:
-
字典永远以键值对的方式出现
-
字典是无序的,每个键值对存放的前后顺序并不影响字典
-
字典根据键来找到对应的值
-
字典的键只能是不可变对象:字符串、数字、元组;不能存放可变对象(如:列表、字典)
-
字典的值可以是任意类型的对象
(2) 字典的新增:
-
dict1[“sex”]=”男”结果为:dict1={“name”:“张三”,12:99,“age”:[1,2,3],“sex”:”男”}
(3) 字典的修改:
-
dict1[“name”]=”yhr”结果为:dict1={“name”:“yhr”,12:99,“age”:[1,2,3]} 其实跟新增的是一样写法、有键则是修改,没有则是新增
-
使用update():如 dict1.update({“name”:“hh”,12:66})结果为dict1={“name”:“hh”,12:66,“age”:[1,2,3]} 该方法可以同时修改多个
(4) 字典的删除:
-
del dict1["name"],dict1[12] 结果为:dict1={"age":[1,2,3]}
-
清空字典 dict1.clear() 字典还是原来的字典
-
dict1={} 相当于重新生成了一个字典、地址已经换了
(5) 字典的使用:
-
判断某个值是否在字典中、是通过键进行判断的
-
清空字典 dict1.clear() 字典还是原来的字典
-
遍历字典中的键 for one in dict1.keys()
-
遍历字典中的值for one in dict1.values()
-
遍历字典中的键值对 for k,v in dict1.items()
-
类列表 print(dict1.keys()) 结果为 dict_keys(["name",12,"age"]) 它不可以使用下标,如果想使用列表、就把它强转成list就可以了