python数据类型大全(变量、字符串、列表、元组、字典、集合)

您所在的位置:网站首页 python提取列表中的某个元素 python数据类型大全(变量、字符串、列表、元组、字典、集合)

python数据类型大全(变量、字符串、列表、元组、字典、集合)

2023-03-25 03:51| 来源: 网络整理| 查看: 265

文章目录

一、变量 `1.1.常用方法` `1.2.变量的三种赋值方式` 二、字符串 `2.1.定义` `2.2.特殊字符` 2.2.1.转义特殊字符 `2.3.字符串格式化操作` `2.4.字符串方法` a.字符串截取 b.字符串查找 c.字符串的分割及替换 d.字符串修饰 e.字符串变形 f.字符串判断 g.字符串拼接 三、列表 `3.1.定义` `3.2.增删改查` `3.3.list函数` `3.4.列表切片` `3.5.列表解析` `3.6.列表方法` 获取列表的下标和值 列表去重后保持顺序不变 四、元组 `4.1.元组的定义` `4.2.元组的优点` `4.3.定义元组` `4.4.tuple函数` 五、字典 `5.1.字典的定义` `5.2.字典的特点` `5.3.字典的基本操作` `5.4.字典方法` a.创建值相同的字典 b.遍历字典 c.字典推导式 六、集合 `6.1.集合的定义` `6.2.集合基本操作` `6.3.去重操作` 七、数据类型对比

 

一、变量 1.1.常用方法 type(变量名) #查看变量类型 print(id(name)) #查看变量的内存地址 del(name) #删除变量name 1.2.变量的三种赋值方式 name = 'qixiang' #传统赋值 name = user = 'qixiang' #链式赋值 name,age = 'qixiang',18 #序列解包赋值 二、字符串 2.1.定义

字符串是一个有序的、不可修改的、以引号包围的序列

2.2.特殊字符 "\"转义符 #取消特殊含义的字符或者作续行符 "\n" #换行符 "\t" #水平制表符,相当于Tab键 2.2.1.转义特殊字符 >>> wpath=r'c:\tmp\nm' >>> print(wpath) c:\tmp\nm 2.3.字符串格式化操作 %s #字符串占位符 %d #数字占位符 %f #浮点型占位符 %.2f #保留小数点后两位 #print('%s age is %d' % ('tom', 18)) print(f"{name} age is {age}") #推荐使用 2.4.字符串方法 a.字符串截取

包头不包尾,从左往右

name = 'abcdef' print(len(name)) #取字符串长度 print(name[0]) #取第一个字符a print(name[1:3]) #取字符bc print(name[0:5:2]) #每隔一位截取,结果ace print(name[:2]) #ab print(name[3:]) #def print(name[-2:]) #保留最后两个字符,ef print(name[:]) #abcdef print(name[::2]) #ace print(name[-1]) #f print(name[::-1]) #反转字符串,fedcba print(name[4:1:-1]) b.字符串查找 str = 'Hello World' print(str.count('o')) # 统计字符o的个数 print(str.find('z')) # 找不到返回-1 print(str.find('o')) # 从左往右,返回第一个字符o的下标4 print(str.rfind('o')) # 从右往左,返回第一个字符o的下标7 print(str.index('o')) # 从左往右,返回第一个字符o的下标4 print(str.index('z')) # 找不到抛出异常 c.字符串的分割及替换 str = 'Hello World' print(str.partition('o')) #以字符o进行分割,('Hell', 'o', ' World') str = 'Hello\nWorld' print(str.splitlines()) #按行分割,用于处理文本,['Hello', 'World'] >>> hi.split() # 默认以空格进行切割 ['hello', 'world'] >>> 'hello.tar.gz'.split('.') # 以点作为分隔符切割 ['hello', 'tar', 'gz'] print(str.replace('H','w')) #把所有的H替换为w,wello World d.字符串修饰 str = 'for' print(str.center(20,'*')) # ********for********* print(str.ljust(10)) #左对齐,占10个位置 print(str.zfill(10)) #从左至右填充,不足用0补齐,0000000for print(str.ljust(8,'0')) #从右至左填充,长度小于8,用0填充,for00000 str = '{} is {}' print(str.format('for','cool')) #将参数按顺序传给前面的大括号,for is cool ' \thello world!\n '.strip() # 去除字符串两端空白字符 ' \thello world!\n '.lstrip() # 去除字符串左边空白字符 e.字符串变形 str = 'Hello' print(str.upper()) #小写变成大写,HELLO print(str.lower()) #大写变成小写,hello print(str.swapcase()) #大小写互换,hELLO print('hello,world'.title()) #以非字母划分,字符串首字母大写,Hello,World print('hello,world'.capitalize()) #字符串首字母大写,Hello,world print('hello \t world'.expandtabs(10)) #制表符强制替换为10个空格(默认8个),hello world f.字符串判断 print('123ab'.isalnum()) # 判断是否只有数字或字母 print('abc'.isalpha()) # 判断是否只有字母 print('123'.isdigit()) # 判断是否只有数字 print('HELLO'.isupper()) # 判断是否只有大写字母 print('hello world'.startswith('h')) # 判断是否由h开头 print('hello world'.endswith('d')) # 判断是否由d结尾 if not username.strip(): #判断是否为空 print("用户名不能为空") g.字符串拼接 a = 'I ' b = 'Love ' c = 'You' d = a + b + c print(d) #结果为:I Love You 三、列表 3.1.定义

列表是一个有序的,可修改的,元素以逗号分割,以中括号包围的序列列表中的元素可重复

3.2.增删改查 alist = [] #定义一个空列表 alist = ['唐三', '小舞'] alist.append('沐白') # 在列表后面追加元素 alist.insert(0, '唐昊') # 在下标为0的位置插入元素,之后的元素整体往后移,当元素很多时,占用内存较多,不推荐该方法 blist = ['魂师', '大魂师'] alist.extend(blist) # 扩展列表,追加到后面 clist = alist + blist # 列表相加,赋值给新列表 alist.pop() # 默认弹出最后一个元素 alist.pop(3) # 弹出下标为3的元素 clist.remove('魂师') # 从左往右,删除第一个匹配的元素 del alist # 删除列表 clist[1] = '小三' # 修改下标为1的元素 print(clist.count('小三')) # 统计某个元素的个数 print(clist.index('大魂师')) # 查找元素的下标值,从左往右,匹配第一个 print(clist[-1]) # 获取列表最后一个元素 print('唐昊' in clist) # 查找是否在列表中,在返回True,不在返回False clist.reverse() # 列表反转 list1 = [4,12,6,1] list1.sort() # 按ASCII码排序 blist = alist.copy() # 将alist的值拷贝一份后,赋值给blist blist.clear() # 清空列表 >>> alist = [2, '5', 4 , 1, 3] >>> alist.sort(key=int, reverse=True) #key仅仅用在比较时 >>> alist ['5', 4, 3, 2, 1] 3.3.list函数 a = 'abc' b = list(a) # 把字符串转换为列表 c = ''.join(b) # 把列表转成字符串 a = [1, 2, 3] # c = ''.join(a) # 会报错,数字列表不能直接转为字符串 c = ''.join(str(i) for i in a) # 先把列表中的数字转为单个字符串,再拼接为完整字符串 3.4.列表切片

参考字符串截取

3.5.列表解析 >>> [5 + i for i in range(1, 11)] [6, 7, 8, 9, 10, 11, 12, 13, 14, 15] >>> ['192.168.1.%s' % i for i in range(1,5)] ['192.168.1.1', '192.168.1.2', '192.168.1.3', '192.168.1.4'] >>> [i for i in range(10) if i % 2 ==0] [0, 2, 4, 6, 8] 3.6.列表方法 获取列表的下标和值 alist = ['a', 'b', 'c'] for index, value in enumerate(alist): print(index, value) 列表去重后保持顺序不变 alist = [10,20,10,5,30,5] blist = list(set(alist)) #去重 blist.sort(key = alist.index) #根据索引进行排序,保持原列表顺序不变 四、元组 4.1.元组的定义

元组是有序的,不可修改的,以逗号分割,以小括号包围的序列,可通过()和tuple()函数定义

不能修改,只有在定义的一瞬间可以修改

元组就是一个静态列表

4.2.元组的优点

由于元组不可以修改,因此遍历元组要比列表快

元组不可变,因此元组中的数据被“写保护”,用于存储比较重要的数据

4.3.定义元组 t1 = (1, 2, 'a', 'b') # 定义一个元组 t1 = () # 定义一个空元组 t1 = (1,) # 定义单元素元组 4.4.tuple函数 alist = ['a', 1] t1 = tuple(alist) # 列表转为元组 str = 'hello' t1 = tuple(str) # 把字符串转为元组 print(''.join(t1)) # 把元组拼接为字符串 五、字典 5.1.字典的定义

字典是无序的、可修改的、元素呈键值对形式、以逗号分割、以大括号包围的数据类型

5.2.字典的特点

字典是无序的,没有索引值,以键取值

字典的键唯一且不可修改

5.3.字典的基本操作 adict = {} #定义一个空字典 info = {'name': 'tom', 'age': '18'} # 定义一个字典 print(info.get('name')) # 获取name的值 print(info.get('name1', 'bob')) # 没有name1则使用默认值bob info['addr'] = 'beijing' # 有则修改,无则添加 del info['age'] # 删除某一键值对 print(info.keys()) # 返回一个包含字典所有key的列表 print(info.values()) # 返回一个包含字典所有value的列表 info.setdefault('addr') # 设置默认,如果键存在,返回值;不存在,创造键,默认值为None info.update({'like': '篮球'}) # 更新指定键的内容,如果键不存在,则创建键值对 print(info.items()) # 返回字典键值呈元组形式 print(len(info)) # 计算键值对的个数 info.pop('addr') # 弹出指定的键值对 info.popitem() # 随机弹出一个键值对 info.clear() # 清空字典 5.4.字典方法 a.创建值相同的字典 >>> bdict = {}.fromkeys(['jerry', 'tom', 'bob'], 20) >>> bdict {'jerry': 20, 'tom': 20, 'bob': 20} b.遍历字典 ### 不推荐 >>> for key, val in adict.items(): ... print(key, val) ### 推荐 for i in adict: print(i, adict[i]) c.字典推导式 >>> {k:v for k, v in {'name': 'tom', 'age': '18'}.items()} {'age': '18', 'name': 'tom'} 六、集合 6.1.集合的定义

集合是一组无序不重复的元素集合

创建一个空集合必须用set(),而不是{ }

集合分为不可变集合forzenset和可变集合set

集合和字典都是无序的,字典的key和集合元素都是不可变的、不能重复的。因此,集合就像是一个没有value的字典

6.2.集合基本操作 >>> aset = set('abc') >>> bset = set('bcd') >>> aset & bset # 交集 {'c', 'b'} >>> aset | bset # 并集 {'c', 'b', 'a', 'd'} >>> aset ^ bset #对称差集,并集-交集 {'a', 'd'} >>> aset.isdisjoint(bset) #没有交集返回True False >>> aset - bset # 差补,在aset中有,bset中没有 {'a'} >>> aset.add('new') # 将new作为整体添加到集合 >>> aset {'new', 'a', 'c', 'b'} >>> aset.update('new') # 将序列对象中的每个元素逐一添加到集合 >>> aset {'new', 'c', 'a', 'n', 'w', 'b', 'e'} >>> aset.remove('new') # 删除一项,没有会报错 >>> print(aset.discard('dd')) #没有不会报错,返回None None >>> aset.pop() #随机删除一项,并打印 b >>> s1.issuperset(s2) # s1是s2的超集吗? >>> s2.issubset(s1) # s2是s1的子集吗? 6.3.去重操作 >>> num_list = [randint(1, 20) for i in range(10)] >>> num_list [1, 7, 19, 13, 18, 16, 19, 15, 9, 19] >>> list(set(num_list)) [1, 7, 9, 13, 15, 16, 18, 19] 七、数据类型对比 数据类型对比 字符串 列表 元组 字典 集合 是否有序 是 是 是 否 否 是否可重复 是 是 是 键不可重复 否 是否可修改 否 是 否 是 否


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3