python的基本数据类型
python的基本数据类型有6中:数字类型、字符串类型、列表、元组、集合、字典等。这六种数据类型又可以分为不可变类型(数字类型、字符串类型、元组)和可变类型(列表、集合、字典)
数字类型:(Number)
包括这4中数据:int整数、bool布尔、float浮点、complex复数
运算和Java等高级语言是一样的
注:python可以同时为多个变量赋值,一个变量可以通过赋值指向不同类型的对象
a, b = 1, 2 #多变量复制,相当于a = 1, b = 2 a, b = (3, 4) #以元组的形式复制,是和上面一样的 # 在赋值的过程中,右边不能是赋值表达式 a = (b = 3) # 这行代码事会报错的 # 在python中,变量是没有类型的,只有值是有类型的,即变量可以指向所有的对象 a = 1 a = "string" a = True a = [1, 2] a = (1, 2) a = {"a": 1, "b": 2}
数值的除法包含两个运算符:/返回一个浮点数; //返回一个整数
# 这里列举与其他语言运算符不同的例子 # / 除运算在除的过程中,会保留小数 a = 10/4 # 结果是2.5 # // 整除运算在整除的过程中,不会保留小数 a = 10 // 4 # 结果是2
在混合计算中,python会把整型转换为浮点型
# 在进行运算时,python解释器会将所有值转换同一类型,在进行运算 a = 1 + 2 + 3.8 # 结果是6.8
type()和isinstance()的区别
type()不会认为子类是一种父类类型
isinstance会认为子类是一种父类类型
class A: def __init__(self): print("A") class B(A): def __init__(self): super().__init__() print("B") if __name__ == "__main__": b = B() print(type(b) == A) # 返回False print(type(b) == B) # 返回True print(isinstance(b, A)) # 返回True print(isinstance(b, B)) # 返回True
del 变量名 删除变量
a = 1 del a print(a) # a is not defined
String(字符串)(不可变的类型)、List(列表)(可变的数据类型)、元组
这三者的结构相似,操作也是很相似
1、表达方式
字符串使用引号括起来、列表使用 " [] " 括起来、元组使用 " () " 括起来
# 字符串形式 a = "abcdefghijklmn" # 列表形式 a = list("a") # a = ["a"] a = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n"] # 元组形式 a = tuple("a") # a = ("a") a = ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n")
2、变量元素值修改
# 字符串和元组是不可变的数据类型,字符串和元组不能增加、修改、删除 a = [1, 2] a.append(3) # [1, 2, 3] append()只在末尾添加,可以用insert()随意添加 a.pop() # [1, 2, 3] pop() 不加参数默认删除最后一个元素 a[0] = 2 # [2, 2] 用索引的方式直接修改即可 a[1] # 2 索引是从0开始的,也可以从末尾开始访问和修改,是从-1开始 a = "abcdefg" a[2] # 字符串只能访问 c a = (1, 2, 3) a[1] # 2
3、截取方式
# 三者截取方式一毛一样的 # 以[:]这样的形式截取, 不加参数相当于复制;[start:end]截取片段是从start开始到end-1 a = "abcdef" a[:2] # "ab" a[-5:-2] # "bcd" a = ["a", "b", "c", "d", "e", "f"] a[:2] # ["a", "b"] a[-5:-2] # ["b", "c", "d"] a = ("a", "b", "c", "d", "e", "f") a[:2] # ("a", "b") a[-5:-2] # ("b", "c", "d")
对于序列类型(除了字符串类型),变量的元素值可以是任何类型的值
# 列表存储数据 a = [1, "string", (1, 2), [1, 2], {1, 2}, {"a":1,"b":2}] # 元组存储数据 a = (1, "string", (1, 2), [1, 2], {1, 2}, {"a":1,"b":2}) # 集合存储数据(不能有重复的数据) a = {1, "string", (1, 2), [1, 2], {1, 2}, {"a":1,"b":2}} # 字典存储数据 a = { "a": 1, "b": "string", "c": (1, 2), "d": [1, 2], "e": {1, 2}, "f": {"a":1,"b":2}, }
常用方法:
字符串的常用方法:find()、join()、len()、count()、split()、replace()
string = "bgjsdvbgweiufg" sub = "bg" string.find(sub) # 0 string.join(sub) # bbgjsdvbgweiufgg, 将string的值插入到sub的元素之间 print(len(string)) # 14 string.count(sub) # 2 arr = string.split("g") print(arr) # ['b', 'jsdvb', 'weiuf', ''] 切掉g字符,剩余字符串组成一个列表 string_new = string.replace("bg", "nb") # 第三个参数是替换的数量,默认为1 print(string_new) # nbjsdvnbweiufg
列表的常用方法:len()、sum()、max/min()、append()、insert()、count()、index()、pop()、remove()、del()
a = [1,2,3] result = sum(a) # 6 限制元素值类型单一,只限数字类型, print(max(a)) # s 限制元素值类型单一,使用数字类型和字符串类型 a.append("asdfg") # [1, 2, 3, 'asdfg'] a.insert(2, "gfdsa") # [1, 2, 'gfdsa', 3, 'asdfg'] a.count(3) # 1 列表中3的个数 a.index(2) # 1 列表中2的索引 result = a.pop() # asdfg 删除列表最后一个元素,并返回当前值 result1 = a.remove(1) # 没有返回值,删除指定元素值 del a[0:2] # 删除一个或多个值
集合,字典
1、表现形式
# 字典的表现形式 a = {} a = dict() # 集合的表现形式 a = set()
2、存储的数据类型:
集合可以存储任何类型的数据,但是存储的数据只能唯一,不能存在重复的数据。
集合添加数据:add(参数)方法是将参数作为一个整体添加进去;update(参数)方法,如果参数是字符串、列表、元组,会将里面的元素值添加进去,如果是字典,就只添加字典的键名
a = {1,2,3,4,5,6,7,8,9,0} # 集合是不支持索引方式 # add()和update()插入方式的区别 a.add("asdfg") # a = {1,2,3,4,5,6,7,8,9,0, "asdfg"} a.update("asdfg") # a = {1,2,3,4,5,6,7,8,9,0, "a", "s", "d", "f","g"}
集合删除数据:pop()方法不接受参数,默认删除第一个元素;remove(元素值)如果元素值存在就删除,不存在就会报错,discard(元素值)和remove()一样,但是不存在,也不会报错
# 集合删除元素值的方式 data = a.pop() # 返回一个值 1 print(a.remove(2)) # 没有返回值, None print(a.discard(3)) # 没有返回值,None
字典的键名必须是不可变类型:数字、字符串、元组(元组的元素值也必须是不可变类型),字典的键值可以是任何数据类型
字典添加数据可以是字典名[键名]=变量值, 访问,修改、删除也是通过字典名[键名]这样的形式
a = {"a":1, "b":2, "c":3, "d": 4} a = {(1,2):2} a = {(1, [2,2]):3} # error