Python基础之基本数据类型
前言:基本类型是需要掌握的,是编程基础。不理解没关系,死记住就好了,就像你小时候背9*9乘法表也不需要为什么。
Python的基本数据类型有 数字,字符串,列表,元组,字典,集合;
一:数字
Python3 数字类型支持 int(长整型)、float(浮点型)、bool、complex(复数)。其中的bool为True(等同于数字1),或者False(等同于数字0),可以进行数值运算;
使用type()函数和isinstance()可以查看对象类型:
print(type(1), type(1.5), type(True), type(5 + 3j))
print(isinstance(1,int),isinstance(True,int),isinstance(True,bool))
print(True + 1,False+1)
结果为:
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
True True True
2 1
数值运算
①加法用 +,减法用 -,乘法用 *,乘方用**;
②关于除法有两种:\ 和 \\,前者表示结果为浮点数,后者表示结果为整型
print(9/2,9//2,10/3,10//3)
结果为
4.5 4 3.3333333333333335 3
二:字符串
用单引号 ' 或双引号 " 括起来的任意文本即为字符串,字符串中的特殊字符要使用 \ 来转义。
①转义
字符串中含有如特殊字符需要转义,比如 \' , \" ,\n,\t等,他自身\ 也需要转义。
print("I'm \n \"ok\" \n \\ \n \\")
输出
I'm
"ok"
\
\
使用 r ' '可以使字符串中的字符不转义,原样输出。
print(r"I'm \n \"ok\" \n \\ \n \\")
输出:
I'm \n \"ok\" \n \\ \n \\
②格式化
三种方式 % f, format:
name = 'tom'
mobile = 1388888888
print('%s 的手机号码是 %s' % (name, mobile))
print('{} 的手机号码是 {}'.format(name, mobile))
print(f'{name} 的手机号码是 {mobile}') #3.6支持
输出为
tom 的手机号码是 1388888888
tom 的手机号码是 1388888888
tom 的手机号码是 1388888888
③常见方法
find(),join (),split (),replace (),strip ()等等,遇到再翻资料;
三:布尔值
布尔值本质上0(False)和1(True),运算有and,or,not
print(True and True) # and是与运算,两边都为True,最终结果才是True
print(True or False) # or是或运算,一边为True,最终结果即是True
print(not False) # not是非运算,取反
结果为
True
True
True
最后,在判断条件中,None,"",(),[],{},0均代表Fasle:
if not '' or None or () or [] or {} or 0 or False:
print("均为假")
输出
均为假
因为 ' ' or None or () or [] or {} or 0 or False ,整体为False,所以not False为True,才能执行方法体中print。or运算中全为False才能整体为False。
四:列表(list)
list为可变的,有序的集合。即长度可变,元素排列有序;但元素类型可以不一致
①定义一个list:使用 [ ]
list = ['A', 'B', 666, True]
print(len(list)) # len()得到list长度,即元素个数
②对元素操作:
通过list[n],n范围为0~len(list)-1,本例中n可取值0,1,2,3,(如果倒着数,最后一个元素下标为-1)超过这个范围会跑出数组越界 IndexError 错误
(1)获取元素,元素赋值
print(list[0])
print(list[1])
print(list[2])
print(list[3])
# print(list[4]) IndexError
print("----------")
print(list[-1])
print(list[-2])
print(list[-3])
print(list[-4])
# print(list[-5]) IndexError
list[0] = "888" # 通过元素下标可以修改元素
print(list)
输出
A
B
666
True
----------
True
666
B
A
['888', 'B', 666, True]
(2)增减元素
# 增减元素
list.append("append") # append追加到末尾
print(list)
list.insert(0, 'insert') # insert插入到指定位置
print(list)
list.pop() # 删除末尾
print(list)
#pop可以接收删除的元素并继续使用
list.pop(0) # 删除指定位置,
print(list)
输出:
['888', 'B', 666, True, 'append']
['insert', '888', 'B', 666, True, 'append']
['insert', '888', 'B', 666, True]
['888', 'B', 666, True]
(3)list嵌套
list元素也可以是另一个list。
list = ['A', 'B', ['c', 'd']],#注意list的长度为3,看成是一个二维数组
# 拆解list为 l1,l2
l1 = ['c', 'd']
l2 = ['A', 'B', l1]
print(list)
print(l2)
#获取子list中的元素
print(list[2][1])
print(l1[1])
输出:
['A', 'B', ['c', 'd']]
['A', 'B', ['c', 'd']]
d
d
五:元组(tuple)
tuple用 ( )来表示。
tuple和list都是python内置的有序的集合,区别是前面的列表list是可变的,而元组tuple是不可变的。
既然是不可变的,那么tuple,只提供了获取元素的方法,其他类似append,pop,insert之类都是没有的。
t = (1, 2, 3) # 一旦初始化,不可更改,元素在初始化的时候定义
print(t[0])
print(t[2])
print(t[3]) #IndexError
注意:当tuple只有1个元素的时候,为了区分()是为了定义tuple还是数学意义的括号,需要加“ ,” 区分。
t = (1) # int 类型 1
print(t)
t = (1,)# tuple
print(t)
输出:
1
(1,)
当tuple内部有个可变的列表list的时候,tuple的元素是可以变化的。这和tuple的“不可变”并不冲突。
t = ('a', 'b', ['A', 'B'])
t[2][0]='X'
t[2][1]='Y'
print(t) #输出为 ('a', 'b', ['X', 'Y'])
搬个图解释:
初始状态.png 更改后.png
不可变指的是:tuple元素的引用指向不可变(可以理解为地址不改变),但是这个引用指向的内容是可变的。对应例中,t[2]的引用在初始化后就不变了,就可以可理解为t本身就不可变。至于t[2]本身内容是什么,变不变,t 本身并不关心。
六:字典dict
dict全称dictionary,是一种使用key-value ( 键值对 ) 的类型。优点,查找快。
①定义
(1):初始化的时候定义元素:
d = {'小王': 10, '大王': 20, '老王': 30}
(2) :通过key,当如指定的value:
d={}
d['小王']=10
d['大王']=20
d['老王']=30
print(d) #输出 {'小王': 10, '大王': 20, '老王': 30}
②赋值,查询,删除
(1)根据key赋值:
d['小王']=99
print(d) #{'小王': 99, '大王': 20, '老王': 30}
d['小王']=88 #多次对同一个key放入不同的value,会覆盖前面的赋值
print(d) #{'小王': 88, '大王': 20, '老王': 30}
(2)根据key查出相应的value:
age=d['小王']
print(age)
age=d['王'] #KeyError,当key不存在会抛出这个错误
当key不存在,会抛出KeyError,避免key是否存在的方法:
①‘key’in dict 判断dict中是否又该key
②dict.get('key',defaultValue),如果key不存在,可以返回None
(3) 用pop(key) 删除一个键值对
d.pop('小王')
print(d) #{'大王': 20, '老王': 30}
dict的查找是根据key计算出value的位置。因此必须保证key是不可变的,否则每次计算出的value位置都不同,内部将会混乱。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key. dict存储的顺序和插入顺序无关,是无序的。
七:set
set和dic的区别在于,set没有储存对应的value,只有key。同时对key的要求也是唯一不可变,因此set可以看成是无序和无重复元素的集合。
(1)定义
定义一个set,需要一个 list 作为参数:
l = [1, 2, 3, 4]
s=set(l)
print(s) # {1, 2, 3, 4}
(2)增加,删除元素
s.add(1)
s.add(2) #重复元素会过滤掉
print(s)
s.remove(4) #删除一个元素
print(s)
输出:
{1, 2, 3, 4}
{1, 2, 3}
点赞评论走起啊~