Python自学之路——Python基础(二)——常用数据类型
.pyc文件 Python是一门高级的语言,计算机是不能识别的,所以需要将高级语言转化为计算机能识别的计算机语言,而这个过程分为两类,一类是编译,一类是解释。 PyCodeObject是将Python运行过程中编译的结果在内存中保存,并在Python程序运行结束时,Python解释器将PyCodeObject写回到pyc文件中。 当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。 所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。 |
常用数据类型
下标是从0开始 从列表中取数的相关操作 ![]() 1 >>> age=27 2 >>> list=["xiaoming","xiaohong","xiaofang",1,2,3,age]#列表元素可以是变量 3 >>> list 4 ['xiaoming', 'xiaohong', 'xiaofang', 1, 2, 3, 27] 5 >>> list[0] #下标从0开始 6 'xiaoming' 7 >>> list[-1] #取最后一个元素 8 27 9 >>> list[0:1] #取数“顾头不顾尾” 10 ['xiaoming'] 11 >>> list[2:4] 12 ['xiaofang', 1] 13 >>> list[-5:-1] 14 ['xiaofang', 1, 2, 3] 15 >>> list[-5:] #这种方式才能一起取到最后一个元素 16 ['xiaofang', 1, 2, 3, 27] 17 >>> list[:] #取所有元素 18 ['xiaoming', 'xiaohong', 'xiaofang', 1, 2, 3, 27] 19 >>> list[:5] 20 ['xiaoming', 'xiaohong', 'xiaofang', 1, 2] 21 >>> list[:5][1] #切片 22 'xiaohong' 23 >>> list[:5][1][2] 24 'a' 基本操作 几点说明:
![]() 1 >>> list[1]="xiaolan" #列表元素更改 2 >>> list.insert(2,"xiaopang") #按下标插入元素 3 >>> list.append("lin") #在列表末尾插入元素 4 >>> list.remove("xiaopang") #删除指定元素 5 >>> list.pop() #默认删除列表最后一个元素,也可以按下标删除指定元素 6 'wangwu' 7 >>> list.pop(1) 8 3 9 >>> del list[3:5] #可连续删除多个元素 10 >>> print(list[0::2]) #按步长取数,步长默认是1 11 >>> 3 in list 12 >>> num=list.count(3) #对相同元素进行计数 13 >>> position=list.index(3) #返回第一个出现指定元素的下标 14 >>> list.extend(list1) #扩展列表 15 >>> list1.reverse #列表反序排列 16 17 #列表的copy 18 >>> list=['xiaoming', 'xiaolan', 'xiaofang', [3, 27], 'lin', 'zhangsan', 'lisi'] 19 >>> list1=list.copy() 20 >>> list[0]="xiaopang" 21 >>> list 22 ['xiaopang', 'xiaolan', 'xiaofang', [3, 27], 'lin', 'zhangsan', 'lisi'] 23 >>> list1 24 ['xiaoming', 'xiaolan', 'xiaofang', [3, 27], 'lin', 'zhangsan', 'lisi'] 25 >>> list1[3][0]=33333 26 >>> list 27 ['xiaopang', 'xiaolan', 'xiaofang', [33333, 27], 'lin', 'zhangsan', 'lisi'] 28 >>> list1 29 ['xiaoming', 'xiaolan', 'xiaofang', [33333, 27], 'lin', 'zhangsan', 'lisi'] 30 >>> list1[3][0]=44444 31 >>> list 32 ['xiaopang', 'xiaolan', 'xiaofang', [44444, 27], 'lin', 'zhangsan', 'lisi'] 33 >>> list1 34 ['xiaoming', 'xiaolan', 'xiaofang', [44444, 27], 'lin', 'zhangsan', 'lisi'] 35 >>> import copy 36 >>> list2=copy.deepcopy(list) 37 >>> list2 38 ['xiaopang', 'xiaolan', 'xiaofang', [44444, 27], 'lin', 'zhangsan', 'lisi'] 39 >>> list[3][0]=1111111 40 >>> list2 41 ['xiaopang', 'xiaolan', 'xiaofang', [44444, 27], 'lin', 'zhangsan', 'lisi'] 42 >>> list1 43 ['xiaoming', 'xiaolan', 'xiaofang', [1111111, 27], 'lin', 'zhangsan', 'lisi'] 44 45 46 #列表的赋值 47 >>> name=[1,2,3,4] 48 >>> name1=name 49 >>> name1[1]=33333 50 >>> name 51 [1, 33333, 3, 4] |
元组的元素是不可变的,但是元组里元素的元素是可变的 常用的操作包括 计数count()和索引index() ![]() 1 >>> tuple=(1,2,3,"alex",[2,3,4]) 2 >>> tuple 3 (1, 2, 3, 'alex', [2, 3, 4]) 4 >>> num=tuple.count(2) 5 >>> print(num) 6 1 7 >>> index=tuple.index(3) 8 >>> print(index) 9 2 10 >>> tuple[4][0]=2222 11 >>> tuple 12 (1, 2, 3, 'alex', [2222, 3, 4]) #元素的元素可改
字符串是最常用的数据类型,常用操作也比较多 http://www.runoob.com/python3/python3-string.html 一些代码练习 ![]() 1 name=input("Please input your name:") 2 print("hei:%s is you" % (name.strip())) #默认是移除空白,也可以移除别的格式 3 names="alex,eric,jack" 4 names_split=names.split(",") 5 print(names_split) 6 print("|".join(names_split)) 7 print(names.index("alex")) 8 print("eric" in names) 9 10 #输出结果 11 Please input your name:lidna 12 hei:lidna is you 13 ['alex', 'eric', 'jack'] 14 alex|eric|jack 15 0 16 True ![]() 1 msg="Hello,{name},it's been a long {age} since last time sopke..." 2 msg2="haha {0},hehe {1}" 3 print(msg2.format("lind","zqq")) 4 msg2=msg.format(name="linda",age=22) 5 print(msg2) 6 #输出结果: 7 haha lind,hehe zqq 8 Hello,linda,it's been a long 22 since last time sopke... 9 10 name="Linda lin" 11 print(name.center(40,'-')) 12 ---------------Linda lin---------------- #输出结果 13 14 name="Linda lin" 15 print(name.find("i")) #返回第一个下标,若查找为空,则返回-1;
字典也是一个存储数据的模型,可存储任意类型的对象。 字典的键值对(key->value)用:分割,每个键值对用,分割,整个字典用({})标识 几点注意:
字典的常用操作 访问字典的值 dic={'name':"rose",'age':27,'addr':"USA"} print("dic[name]:",dic['name']) print("dic[age]:",dic['age']) 输出结果: dic[name]: rose dic[age]: 27 修改字典的值 dic={'name':"rose",'age':27,'addr':"USA"} dic['name']="Jack" dic['sex']="Woman" print("dic[name]:",dic['name']) #修改信息 print("dic[sex]:",dic['sex']) #增加信息 输出结果: dic[name]: Jack dic[sex]: Woman 删除字典 dic={'name':"rose",'age':27,'addr':"USA"} del dic['name'] #删除指定的元素 print(dic) dic.clear() #删除字典里的所有元素,留下一个空字典 print(dic) del dic #这样删除会把整个字典删除,print命令会出错,因为dic这个字典已经不存在了 print(dic) 输出结果: {'addr': 'USA', 'age': 27} {} print(dic) NameError: name 'dic' is not defined 字典的内置函数和方法 内置函数 内置方法
集合是一类无序不重复的数据类型,支持union(并)intersection(交) difference(差)symmetric_difference(对称差)等数学运算,但由于集合是无序的,所以它不能使用index split等序列化的操作。 创建集合 s = set() print(s) st = 'alex' s = set(st) print(s) lis = [11, 22, 33] s = set(lis) print(s) dic = {'age': 22, 'name': 'jack'} s = set(dic) print(s) 输出结果: set() {'l', 'e', 'a', 'x'} {33, 11, 22} {'age', 'name'} 集合操作 ![]() 1 s = set() 2 print(s) 3 s.add(1)#添加一个元素 4 print(s) 5 s.clear()#清除所有元素 6 print(s) 7 s1 = {11, 22, 33} 8 s2 = {22, 33, 44} 9 s3 = s1.difference(s2)#s1中存在,s2中不存在的元素(差) 10 print(s3) 11 s3 = s1.symmetric_difference(s2)#s1,s2中不相同的元素(对称差) 12 print(s3) 13 s1.difference_update(s2)#从当前集合中删除与s2相同的元素 14 print(s1) 15 s1 = {11, 22, 33} 16 s1.symmetric_difference_update(s2)#将对称差集更新到s1中 17 print(s1) 18 输出结果: 19 set() 20 {1} 21 set() 22 {11} 23 {11, 44} 24 {11} 25 {11, 44} ![]() 1 s1 = {11, 22, 33} 2 s1.discard(11)#删除指定元素,不存在不报错 3 print(s1) 4 s1.discard(1111) 5 s1.remove(22)#删除指定元素,不存在会报错 6 print(s1) 7 #s1.remove(11111) 8 s1 = {11, 22, 33} 9 res = s1.pop()#返回删除的元素 10 print(res) 11 12 s1 = {11,22,33} 13 s2 = {22,33,44} 14 s3 = s1.union(s2)#合并两个集合 15 print(s3) 16 s3 = s1.intersection(s2)#取集合的交集 17 print(s3) 18 s1.intersection_update(s2)#取s1和s2的交集并且更新到s1中 19 print(s1) 20 st = 'alexalex' 21 s1.update(st)#将st里的元素更新到s1中 22 print(s1) 23 输出结果: 24 {33, 22} 25 {33} 26 33 27 {33, 22, 11, 44} 28 {33, 22} 29 {33, 22} 30 {33, 'l', 'x', 'e', 22, 'a'} |