Python笔记(11)数据类型

    技术2026-03-12  5

    #!/user/bin/env python # -*- coding:utf-8 -*- # author:berlin # 1、数字 # (1)int(整型) # 在32位机器上,整数的位数是32位,取值范围是-231~231-1,即-2147483648~214748364;在64位系统上, # 整数的位数为64位,取值范围为-263~263-1,即9223372036854775808~9223372036854775807。 # (2)long(长整型) python3中没有该类型了 # Python长整型没有指定位宽,但是由于机器内存有限,使用长的长整数数值也不可能无限大。 # (3)float(浮点型) # 浮点型也就是带有小数点的数,其精度和机器有关。 # (4)complex(复数) # Python还支持复数,复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表 # 示, 复数的实部 a 和虚部 b 都是浮点型。 # 2、布尔型 # 真或假(True或False) # 1或0 # 和其他编程语言一样,Python布尔类型也是用于逻辑运算,有两个值:True(真)和False(假)。 # 3、字符串 # 在Python中,加了引号的字符都被认为是字符串,其声明有三种方式,分别是:单引号、双引号和三引号; # Python中的字符串有两种数据类型,分别是str类型和unicode类型,str类型采用的ASCII编码,无法表示 # 中文,unicode类型采用unicode编码,能够表示任意字符,包括中文和其他语言。 # (1)一些用于字符串的语法 sex = 'women' print(sex.capitalize()) # 首字母大写 print(sex.count('e')) # 统计字符串中e的个数 print(sex.center(50, '-')) # 打印50个字符,women放在中间,其他使用-补充 print(sex.endswith('en')) # 判断字符串是否以en结尾,返回true或false sex1 = 'wo\tmen' print(sex1.expandtabs(tabsize=30)) # 变量sex = 'wo\tmen',指把‘\t’转成30个空格 print(sex.find('me')) # 返回m字母对应的索引号,即返回首字母的索引号 name = '我的名字是:{name},{year}岁' print(name.format(name='ganbailin', year='26')) print(name.format_map({'name': 'gan', 'year': 27})) print(sex.isalnum()) # print(sex.isalpha()) # print(sex.isdecimal()) # 判断变量sex是否是一个小数 print(sex.isdigit()) # 判断变量sex是否是一个整数 print(sex.isidentifier()) # 判断变量sex是否是一个合法的标识符 print(sex.islower()) # 判断变量sex是否是小写字母 print(sex.isupper()) # 判断变量sex是否是大写字母 print(sex.isspace()) # 判断变量sex是否是空格 print(sex.istitle()) # print('+'.join(['1', '2', '3'])) # 对列表每个字符串的间隔之间加入一个+或其他。注意:列表中不能是数字 print(sex.ljust(50, '*')) # 使变量sex的字符串长度是50,若不足在右边使用*补足 print(sex.rjust(50, '*')) # 使变量sex的字符串长度是50,若不足在左边使用*补足 print(' Gan'.lstrip()) # 去掉左边的空格 print('Gan '.rstrip()) # 去掉右边的空格 print(' Gan '.strip()) # 去掉两边的空格 print('gshhs'.replace('h', 'H', 1)) # 替换字符串 print('hshhdsajjhhi'.rfind('h')) # 返回在最右的h得到下标 print('1+2+3+4+5'.split('+')) # 按照+号分割字符,并返回列表默认按照空格分割 print('hshhyuyhydyyahyyyyytdtw'.split('h')) # 按照h分割字符,并返回列表默认按照空格分割 print('js\njd'.splitlines()) # 遇到换行符\n时,则分割,并返回列表 print('udfu'.swapcase()) # 返回大写 print('gan bai lin'.title()) # 返回标题形式,首字母大写 # 4、列表 # 列表是Python中使用最频繁的数据类型,集合中可以放任何数据类型,可对集合进行创建、查找、切片、 # 增加、修改、删除、循环和排序操作。 # 例子: names = ['zhangmeng', 'ganbailin', 'xiaohong', 'tanyu', 'xiepengcheng'] print(names) # 输入列表中所有名称(查) print(names[0], names[2]) # 输入列表中特定名称(查) print(names[1:3]) # 切片 从左往右,相对于1<=rank<3。输入列表中范围名称(查) print(names[:3]) # 切片 从左往右,相对于0<=rank<3。输入列表中范围名称(查) print(names[-2:]) # 切片 从右往左,从左数起是从-1开始的,相当于-2<=范围<=-1 。输入列表中范围名称(查) names.append('zhaotingting') # 在列表最后追加一个名称(增) names.insert(1, 'xiaopeng') # 插入一个名称,1代表要插入所在的位置(增) names[2] = 'xiepengcheng' # 修改列表中的某个名称,2代表被修改名称的位置(改) names.remove('tanyu') # 删除掉某个名称(删) del names[1] # 删除某个名称,1代表被删除的位置(删) names.pop() # 当在括号里面不输入下标数字时,默认删除最后一个(删) print(names) print(names.index('xiaohong')) # 输出列表中某个名称的位置(查) print(names[names.index('xiepengcheng')]) # 根据名称先查询到位置,再根据位置输出名称(查) print(names.count('xiepengcheng')) # 统计列表中有多少个xiepengcheng(查) # names.clear() #清空列表中的所有名称(删) names.reverse() # 把列表中的名称顺序反转过来(查) names.sort() # 把列表中的名称排序,按照ASCII码排序(查) print(names) names2 = [1, 2, 3, 4, 5] # 新建一个列表names2 names.extend(names2) # 把names2中的值扩展到names中(增) print(names, names2) # 即便把names2扩展到names中了,names2依然还存在的 del names2 # 当删掉names2后才会不存在 print(names) names3 = names.copy() # 新建一个列表从names列表中复制 print(names3) # 浅copy import copy person = ['name', ['a', 100]] p1 = copy.copy(person) # 浅copy的三种方式之一 p2 = person[:] # 浅copy的三种方式之一 p3 = list(person) # 浅copy的三种方式之一 print(p1, p2, p3) # 列表中放一个小列表 names4 = ['zhangmeng', 'ganbailin', 'xiaohong', ['lilingling', 'ganweiyi'], 'tanyu', 'xiepengcheng'] # print(names4[3][0]) names5 = names4 names4[3][1] = '甘唯依' print(names4) # 单值与列表的区别 # (1)当是单值(数字或者字符串)时: # a = 1 # b = a # a = 3 # print(b) #当单值(数字或者字符串)时,即使a的值变化了,b还是1 # (2)当是列表时: a = [1, 2, 3] b = a a[1] = 333 print(b) # 当是列表时,a变化了,b也是跟着变化,输出是[1,333,3] # 循环输出列表 for i in names4: print(i) # 间隔输出列表中的值 print(names4[0:-1:2]) # 第一种写法:0代表第一个,-1代表最后一个,2代表间隔。 print(names4[::2]) # 第二种写法:意思同上,省略了0和-1 # 5、元组 # 元组和列表一样,也是一种序列,与列表不同的是,元组是不可修改的,元组用”()”标识,内部元素 # 用逗号隔开。 # 例子: tuple = (8, 9, 14, 25, 36) # 元组与列表的作用是一样的,主要区别是:元组不能增、删、改,只能查。所以元组也叫只读列表 # 元组只有2个方法,一个是count ,另一个是index # 6、字典 # 字典是一种键值对的集合,是除列表以外Python之中最灵活的内置数据结构类型,列表是有序的对象集 # 合,字典是无序的对象集合(即没有下标)。 # 例子: # dict = {key:value} info = { 'stu01': 'xiepengcheng', 'stu02': 'lilingling', 'stu03': 'ganbailin' } # (1)增删改查 print(info) print(info['stu01']) # 查看 info['stu04'] = 'gannan' # 增加 print(info) info['stu01'] = '谢鹏程' # 修改 print(info) # del info['stu01'] #删除 print(info) # info.popitem() #删除 print(info) info.pop('stu02') # 删除(标准的,经常使用) print(info) print(info.get('stu03')) # 获取(查看) # (2)多级字典嵌套及操作(嵌套列表) catalog = { 'trining1': { 'day1': ['hello world', '定义变量', '字符编码和二进制'], 'day2': ['单多行的注释和输出', '用户输入', '流程判断'], 'day3': ['while循环', 'for循环', '什么是模块'] }, 'trining2': { 'day4': ['什么是pyc', '数据类型', '练习'], 'day5': ['结束', '好的哈哈', '哈一样'] } } print(catalog.get('trining1').get('day1')) # 查- catalog['trining2']['day5'][0] = '多级字典' # 修改 print(catalog) # (3)字典常用的方法 print(info.values()) # 只输出字典的值 print(info.keys()) # 只输出字典的key catalog.setdefault('trining3', {'day6': ['uusha', 'jjf', 'hyst']}) # 该方法是指:判断字典中是 # 否有trining3,如果有则输出的是字典的原有。如果没有,则创建一个新的trining的key和value print(catalog) info2 = { 'stu01': 'linchunlian', 'new1': 'xiaohong', 'new2': 'zhaotingting' } info.update(info2) # 该方法指:字典info2中如果相同的key而value变化就改变值。如果字典info2中有新的key # 和value就新增到字典info中。(起“更新并且合并”作用) print(info) info3 = dict.fromkeys([6, 7, 8]) # 创建一个新的字典,key是7,8,9。value都是null.几个key对应 # 的value都是相同的,即使value修改后也都是相同 print(info3) info4 = dict.fromkeys([4, 5, 6], 'test') # 创建一个新的字典,key是4,5,6。value都是test.几个key对应 # 的value都是相同的,即使value修改后也都是相同 print(info4) print(info.items()) # 把字典转成列表 # (3)字典的循环 for i in info: print(i, info[i]) # 如果只输出i就只输出key,info[i]代表value for k, v in info.items(): # 该循环是把字典转换为列表后再输出。注意:上面的循环比该循环更高效 print(k, v) #(4)三级菜单实例 # data = { # '广东': { # '深圳':['福田区', '南山区', '宝安区'], # '广州':['天河区', '白云区'], # '东莞':['常平镇', '莞城'] # }, # '广西': { # '梧州':['岑溪市', '藤县', '苍梧区'], # '南宁':['市中心', '郊区'] # } # } # # exit_flag = False # while not exit_flag: # for a in data: # print(a) # choice1 = input('请输入省份:') # if choice1 in data: # while not exit_flag: # for b in data[choice1]: # print('\t', b) # choice2 = input('请输入城市:') # if choice2 in data[choice1]: # while not exit_flag: # for c in data[choice1][choice2]: # print('\t\t', c) # choice3 = int(input("请输入区域:")) # if choice3 in data[choice1][choice2]: # for d in [choice1][choice2][1]: # print('最终为:',d) # choice4 = input('最后一层了,选择:返回/继续') # if choice4 == '返回': # pass # elif choice4 == '继续': # exit_flag = True # if choice4 == '返回': # break # elif choice4 == '继续': # exit_flag = True # if choice4 == '返回': # break # elif choice4 == '继续': # exit_flag = True # 7、集合 # 集合是一个无序的、不重复的数据组合,它的主要作用有两个,分别是去重和关系测试。 # 例子: #(1)创建集合 set111 = {845, 7441, 958, 444, 4} print(set111) #(2)集合可以起到去重的作用。如下一个列表是有重复的值的,转换为集合后可以去重 list_1 = [1,2,3,4,2,3,4,5,6,7,7,8] set_1 = set(list_1) print(set_1,type(set_1)) #(3)构建交集(两种写法:英文和符号) set_2 = set([2,43,44,56,4,5,6,53,55,98]) print(set_1.intersection(set_2)) print(set_1 & set_2) #(4)构建并集(两种写法:英文和符号) print(set_1.union(set_2)) print(set_1 | set_2) #(5)构建差集(两种写法:英文和符号) print(set_1.difference(set_2)) #取出set_1中有的,而set_2中没有的集合 print(set_1 - set_2) print(set_2.difference(set_1)) #取出set_2中有的,而set_1中没有的集合 print(set_2 - set_1) #(6)构建子集 set_3 = set([2,3]) print(set_3.issubset(set_1)) #判断set_3是否是set_1的子集 print(set_1.issubset(set_3)) #判断set_1是否是set_3的子集 #(7)构建父集 print(set_3.issuperset(set_1)) #判断set_3是否是set_1的父集 print(set_1.issuperset(set_3)) #判断set_1是否是set_3的父集 #(8)构建对称差集(与交集的结果的相反)(两种写法:英文和符号) print(set_1.symmetric_difference(set_2)) print(set_1 ^ set_2) #(9)判断两个集合是否“没有交集”,如果是返回TRUE,如果不是返回FALSE set_4 = {7,8} print(set_1.isdisjoint(set_3)) print(set_3.isdisjoint(set_4)) #(10)添加一项 set_4.add(9) print(set_4) #(11)添加多项 set_4.update([10,41]) print(set_4) #(12)删除一项 set_4.remove(41) print(set_4) #(13)获取长度 print(len(set_4)) #删除,和remove的区别是:使用remove时没有这个值会报错,而discard不会 print(set_4.discard('ddd'))
    Processed: 0.016, SQL: 9