Python 学习之路 - Python 基础 - (2)
一、Python 数据类型
1、数字
int(整型)
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点数)
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点数)
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
2、布尔值
真或假
1 或 0
3、字符串
"Hello World"
二、三元运算
result = 值1 if 条件 else 值2
如果条件为真:result = 值1
如果条件为假:result = 值2
三、字符串
1 #移除空白 2 user_name = input("user:") 3 if user_name.strip() == 'Amy': #可以指定脱掉前后的空格(/n)或换行...,默认空格,tab键和换行 4 print("Welcome!") 5 6 #分割 7 names = "alex,jack,rain" 8 name2 = names.split(",") 9 print(name2) 10 11 #合并 12 name3 = "|".join(name2) #按 | 把name2列表中的元素合并成一个字符串 13 print(name3) 14 print("|".join(name2)) 15 16 #判断字符串中是否存在某个字符 17 name = "Amy Wang" 18 print("" in name) # name中是否存在空格 19 20 #查找字符串中有没有某个字符串 21 print(name.find("W")) #返回的是一个索引,没找到会返回-1 22 23 #第一个单词的首字母大写 24 name = "amy wang" 25 print(name.capitalize()) 26 27 #两种字符串形式 28 msg = "Hello,{name}, I want see you on {day} this month" 29 msg2 = msg.format(name = "DDD",day = 27) 30 print(msg2) 31 32 #or 33 34 msg3 = "wwww{0},pppp{1}" #必须按顺序来 35 print(msg3.format("amy",20)) 36 37 #切片 同列表 38 name = "Amy Wang" 39 print(name[3:]) 40 41 #居中 42 print(name.center(40,"-")) 43 44 #居右 45 print(name.rjust(40,"-")) 46 47 #居左 48 print(name.ljust(40,"-")) 49 50 #判断输入的是不是数字 51 age = input("your age:") 52 if age.isdigit(): 53 age = int(age) 54 else: 55 print("Please enter digit type") 56 57 #判断只包含字母和数字 58 name = "www!ggg" 59 name2 = "www3ggg" 60 print(name.isalnum()) #False 61 print(name2.isalnum()) #True 62 63 #判断是否以什么结尾或开头 64 name = "gsdamyuuuul" 65 print(name.endswith("ul")) 66 print(name.startswith("g")) 67 68 #转换成大写/小写 69 name = "amy wang" 70 name2 = name.upper() #换成大写 71 print(name2) 72 print(name2.lower()) #换成小写
四、列表
Python中的列表相当于其它语言中的数组
1.
1 #定义列表 2 age = 18 3 name = ["Jack","Judy","Windy",23,age] #可以把数字,字符串,变量等都存在同一个列表 4 print(name) 5 6 #列表取值 7 print(name[1]) #把列表下标为1的取出,并打印。列表的下标是从0开始 8 print(name[-1]) 9 10 #切片(多个取值输出) 11 print(name[0:2]) # 顾首不顾尾,取下标0~2的值,包括下标0,不包括下标2 12 print(name[2:]) #不写下标,默认取到最后一个值 13 print(name[:2]) #默认从第一个开始取值 14 15 #修改列表中的值 16 name[1] = "July" 17 print(name) 18 19 #在某个位置插入一个新的值 20 name.insert(2,"Hallen") #插入一个值到下标为2的位置。一次只能插入一个值到列表 21 name.insert(-1,"monica") #插入一个值到-1的左边位置 22 print(name) 23 24 #删除列表中的某个值 25 name.remove("Jack") #remove 删除时要用具体的名字 26 print(name) 27 del name[1:2] 28 print(name) 29 30 #在列表最后添加一个元素 31 name.append(20) 32 print(name) 33 34 #步长 35 print(name[::2]) #每隔一个人输出一个人
2.
1 name = ["Jack",9,"Judy","Windy",23,9] 2 3 print(name.index("Jack")) 4 5 # 列表 count, index 的用法 6 #判断某个元素在列表中是否存在,如果存在输出存在的个数,并指出该元素第一个存在的位置 7 if 9 in name: 8 num_of_ele = name.count(9) # 存在输出存在的个数 9 ele_position = name.index(9) # 指出该元素第一个存在的位置 10 print("[%s] 9 in the list.The first 9 position is %s " % (num_of_ele,ele_position)) 11 12 #把列表中的所有9变成8 13 for i in range(name.count(9)): 14 ele_position_2 = name.index(9) 15 name[ele_position_2] = 8 16 print(name) 17 18 # 给name列表扩展一个新的列表 19 name2 = ["ag","ab","cf","cd","be"] 20 name.extend(name2) 21 print(name) 22 print(name2)# name2仍然存在 23 24 #把列表倒过来 25 name.reverse() 26 print(name) 27 28 #排序列表中的元素。3.0中,列表既有字符串又有数字不能直接排序。 29 name2.sort() # 按照ASCII码中的顺序排序 30 print(name2) 31 32 #指定删除某个下标元素,默认删除最后一个 33 name2.pop() 34 print(name2) 35 name2.pop(2) 36 print(name2)
3.
1 name = ["Jack",9,"Judy","Windy",[9,4,3,5],9] #name列表里面的列表会从新开辟一个内存,只是存一个地址在name列表 2 #复制列表 3 name3 = name.copy() 4 name[0] = "Alex" 5 name[4][1] = 88888 6 name3[4][2] = 3333 7 print(name) 8 print(name3) 9 #第一层的会完全复制一份独立的数据,第二层的只是把地址复制过来 10 11 #全部完全复制出来,成为一份独立数据 12 import copy 13 name = ["Jack",9,"Judy","Windy",[9,4,3,5],9] 14 name4 = copy.deepcopy(name) 15 name[4][1] = 88888 16 print(name) 17 print(name4) 18 19 # copy.copy(name) 相当于name.copy() 浅copy 20 21 name = ["Jack",9,"Judy","Windy",[9,4,3,5],9] 22 name5 = name 23 name[2] = "New New" 24 name5[4][2] = 33333 25 print(name) 26 print(name5) 27 #列表不会像变量一样,值改变以后生成一个新的空间。列表赋值只是保存一个地址, 28 # name与name5,只要其中一个列表的一个值改变,另一个列表对应的值也改变 29 30 #列表的长度 31 print("Length of name list",len(name))
五、元组
元组相当于只读列表,只有count,index方法,这两种方法与列表的使用方法相同。
六、字典
定义字典,大括号里面,key:value的形式定义,每个key:value之间以逗号隔开
注意:1. key必须是唯一的,不然会去掉后面重复的key
2. 字典是无序的
1 id_db = { 2 510330669080456:{ 3 "name" : "wangDa", 4 "age" : 22, 5 "addr" : "Du" 6 }, 7 510330669080457:{ 8 "name" : "wang", 9 "age" : 23, 10 "addr" : "Du" 11 } 12 } 13 print(id_db) 14 15 #取值 16 print(id_db[510330669080457]) #如果这个key不存在会报错 17 print(id_db.get(510330669080456))# 这个key不存在也不会报错,返回 None 18 19 #修改 20 id_db[510330669080457]["name"] = "Cheng" 21 #新增一个不存在的key和对应的value 22 id_db[510330669080457]["Detail"] = "Child" 23 print(id_db[510330669080457]) 24 25 #删除 26 del id_db[510330669080457]["addr"] 27 print(id_db[510330669080457]) 28 29 id_db[510330669080457].pop("age") 30 print(id_db[510330669080457]) 31 32 #打印所有的key 33 print(id_db.keys()) 34 35 #打印所有的value 36 print(id_db.values()) 37 38 #到字典中找key是否存在,存在的话,返回字典中对应的key:value;不存在,创建一个新的 39 id_db.setdefault(510330669080458,{ "name" : "wangDa222"}) 40 print(id_db) 41 id_db.setdefault(510330669080457,{ "name" : "wangDa333"}) 42 print(id_db) 43 44 #用一个字典更新另一个字典 45 info = { 46 510330669080456:{ 47 "name" : "Amy", 48 "age" : 18, 49 "addr" : "tt" 50 }, 51 1:3, 52 5:6 53 } 54 id_db.update(info) 55 print(id_db) 56 57 #把字典转换成列表 58 print(id_db.items()) 59 60 #初始化一个新的字典,给每个key都赋同一个value 61 c = dict.fromkeys([6,7,8],[1,"test"]) 62 print(c) 63 #坑 64 #像copy一样,第二层只是保存的一个地址,所以改一个,所有的都会改 65 c[6][0] = "555" 66 print(c) 67 68 #字典的循环 69 for i in id_db: #最推荐的,高效 70 print(i,id_db[i]) 71 72 for k,v in id_db.items(): #需要先转换成列表,数量大的时候费时 73 print(k,v)

浙公网安备 33010602011771号