Python基本数据类型
Posted bubu99
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基本数据类型相关的知识,希望对你有一定的参考价值。
运算符:
1.算数运算符 +加, -减, *乘 ,/除 ,%取余, **幂 ,//取整除 2.赋值运算 =, += ,-= ,*= ,/= ,%= ,**=, //= 3.比较运算 == ,!=(<>), >, < ,>= ,<= 4.逻辑运算 and , or , not 5.成员运算 in , not in
基本数据类型:
1.i数字
int整型 创建:age=10 或 age=int(10) float浮点型 创建:salary=3.1 或 salary=float(3.1)
2.bool布尔 None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False
真或假
1 或 0
3.str字符串
创建:name="tom" 或 name=str("tom") 常用功能: 移除空白 分割 长度 索引 切片 格式化输出 print(‘My name is %s,my age is %s‘%(‘tom‘,18)) # My name is tom,my age is 18
#strip name=‘*egon**‘ print(name.strip(‘*‘)) print(name.lstrip(‘*‘)) print(name.rstrip(‘*‘)) #lower,upper name=‘egon‘ print(name.lower()) print(name.upper()) #startswith,endswith name=‘alex_SB‘ print(name.endswith(‘SB‘)) print(name.startswith(‘alex‘)) #format的三种玩法 res1=‘{} {} {}‘.format(‘egon‘,18,‘male‘) res2=‘{1} {0} {1}‘.format(‘egon‘,18,‘male‘) res3=‘{name} {age} {sex}‘.format(sex=‘male‘,name=‘egon‘,age=18) print(res1) #egon 18 male print(res2) #18 egon 18 print(res3) #egon 18 male #split name=‘root:x:0:0::/root:/bin/bash‘ print(name.split(‘:‘)) #默认分隔符为空格 name=‘C:/a/b/c/d.txt‘ #只想拿到顶级目录 print(name.split(‘/‘,1)) #[‘C:‘, ‘a/b/c/d.txt‘] name=‘a|b|c‘ print(name.rsplit(‘|‘,1)) #从右开始切分 [‘a|b‘, ‘c‘] #join tag=‘ ‘ print(tag.join([‘egon‘,‘say‘,‘hello‘,‘world‘])) #可迭代对象必须都是字符串 #replace name=‘alex say :i have one tesla,my name is alex‘ print(name.replace(‘alex‘,‘SB‘,1)) #isdigit:可以判断bytes和unicode类型,是最常用的用于于判断字符是否为"数字"的方法 age=input(‘>>: ‘) print(age.isdigit()) #请输出 name 变量对应的值的第 2 个字符 name[1] #请输出 name 变量对应的值的后 2 个字符 name[-2:] #获取子序列,去掉最后一个字符 a=name[:-1] #请输出 name 变量对应的值的前 3 个字符 name[:3] #请输出 name 变量对应的值中 “e” 所在索引位置? name.index(‘e‘)
#find,rfind,index,rindex,count name=‘egon say hello‘ print(name.find(‘o‘,1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引 # print(name.index(‘e‘,2,4)) #同上,但是找不到会报错 print(name.count(‘e‘,1,3)) #顾头不顾尾,如果不指定范围则查找所有 #center,ljust,rjust,zfill name=‘egon‘ print(name.center(30,‘-‘)) #-------------egon------------- print(name.ljust(30,‘*‘)) #egon************************** print(name.rjust(30,‘*‘)) #**************************egon print(name.zfill(50)) #用0填充0000000000000000000000000000000000000000000000egon #expandtabs name=‘egon hello‘ print(name) #egon hello print(name.expandtabs(1)) #egon hello #captalize,swapcase,title print(name.capitalize()) #首字母大写 print(name.swapcase()) #大小写翻转 msg=‘egon say hi‘ print(msg.title()) #每个单词的首字母大写 #is数字系列 #在python3中 num1=b‘4‘ #bytes num2=u‘4‘ #unicode,python3中无需加u就是unicode num3=‘四‘ #中文数字 num4=‘Ⅳ‘ #罗马数字 #isdigt:bytes,unicode print(num1.isdigit()) #True print(num2.isdigit()) #True print(num3.isdigit()) #False print(num4.isdigit()) #False #isdecimal:uncicode #bytes类型无isdecimal方法 print(num2.isdecimal()) #True print(num3.isdecimal()) #False print(num4.isdecimal()) #False #isnumberic:unicode,中文数字,罗马数字 #bytes类型无isnumberic方法 print(num2.isnumeric()) #True print(num3.isnumeric()) #True print(num4.isnumeric()) #True #三者不能判断浮点数 num5=‘4.3‘ print(num5.isdigit()) #False print(num5.isdecimal()) #False print(num5.isnumeric()) #False ‘‘‘ 总结: 最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景 如果要判断中文数字或罗马数字,则需要用到isnumeric ‘‘‘ #is其他 print(‘===>‘) name=‘egon123‘ print(name.isalnum()) #字符串由字母或数字组成 print(name.isalpha()) #字符串只由字母组成 print(name.isidentifier()) #True print(name.islower()) #True print(name.isupper()) #False print(name.isspace()) #False print(name.istitle()) #False 示例
4.list列表 (有序可变)
创建:name_list=[‘tom‘,‘rose‘,‘lucy‘] 或 name_list=list([‘tom‘,‘rose‘,‘lucy‘]) 常用功能: 索引 切片 追加 删除 长度 切片 循环 包含
#ps:反向步长 l=[1,2,3,4,5,6] #正向步长 l[0:3:1] #[1, 2, 3] #反向步长 l[2::-1] #[3, 2, 1] #列表翻转 l[::-1] #[6, 5, 4, 3, 2, 1]
user_info=[[‘tom‘,18,[‘play‘,]],[‘rose‘,20,[‘sing‘,‘paint‘]]] print(user_info[1][2][1]) #paint print(user_info[0][0]) #tom print(user_info[0][2]) #[‘play‘] print(user_info[1][1]) #20 print(user_info[1]) #[‘rose‘, 20, [‘sing‘, ‘paint‘]] #字典无序,取值用key user_info=[ {‘name‘:‘tom‘,‘age‘:18,‘hobbies‘:[‘paly‘]}, {‘name‘:‘rose‘,‘age‘:20,‘hobbies‘:[‘sing‘,‘paint‘]}, ] print(user_info[1][‘hobbies‘][1]) #paint print(user_info[0][‘name‘]) #tom print(user_info[0][‘hobbies‘]) #[‘play‘] print(user_info[1][‘age‘]) #20 print(user_info[1]) #{‘name‘: ‘rose‘, ‘age‘: 20, ‘hobbies‘: [‘sing‘, ‘paint‘]} user_info={ ‘vip‘:{‘name‘:‘tom‘,‘age‘:18,‘hobbies‘:[‘paly‘]}, ‘gold‘:{‘name‘:‘rose‘,‘age‘:20,‘hobbies‘:[‘sing‘,‘paint‘]}, } print(user_info[‘gold‘][‘hobbies‘][1]) #paint print(user_info[‘vip‘][‘name‘]) #tom print(user_info[‘vip‘][‘hobbies‘]) #[‘play‘] print(user_info[‘gold‘][‘age‘]) #20 print(user_info[‘gold‘]) #{‘name‘: ‘rose‘, ‘age‘: 20, ‘hobbies‘: [‘sing‘, ‘paint‘]}
5.dict字典(无序可变)
创建:user={"name":"tom","age":18}或user=dict({"name":"tom","age":18}) 常用功能: 索引 新增 删除 键、值、键值对 循环 长度
#作用:存多个值,key-value存取,取值速度快 #定义:key必须是不可变类型,value可以是任意类型 info={‘name‘:‘egon‘,‘age‘:18,‘sex‘:‘male‘} #本质info=dict({....}) 或 info=dict(name=‘egon‘,age=18,sex=‘male‘) 或 info=dict([[‘name‘,‘egon‘],(‘age‘,18)]) 或 {}.fromkeys((‘name‘,‘age‘,‘sex‘),None) #优先掌握的操作: #1、按key存取值:可存可取 #2、长度len #3、成员运算in和not in #4、删除 #5、键keys(),值values(),键值对items() #6、循环
s=‘hello alex alex say hello sb sb‘ l=s.split() dic={} for item in l: if item in dic: dic[item]+=1 else: dic[item]=1 print(dic) s=‘hello alex alex say hello sb sb‘ dic={} words=s.split() print(words) for word in words: #word=‘alex‘ dic[word]=s.count(word) print(dic) #利用setdefault解决重复赋值 ‘‘‘ setdefault的功能 1:key存在,则不赋值,key不存在则设置默认值 2:key存在,返回的是key对应的已有的值,key不存在,返回的则是要设置的默认值 d={} print(d.setdefault(‘a‘,1)) #返回1 d={‘a‘:2222} print(d.setdefault(‘a‘,1)) #返回2222 ‘‘‘ s=‘hello alex alex say hello sb sb‘ dic={} words=s.split() for word in words: #word=‘alex‘ dic.setdefault(word,s.count(word)) print(dic) #利用集合,去掉重复,减少循环次数 s=‘hello alex alex say hello sb sb‘ dic={} words=s.split() words_set=set(words) for word in words_set: dic[word]=s.count(word) print(dic) 其他做法(重点看setdefault的用法)
6.tuple元组(有序不可变)
创建:name_tuple=(‘tom‘,‘rose‘,‘lucy‘) 或 name_tuple=tuple((‘tom‘,‘rose‘,‘lucy‘)) 常用功能: 索引 切片 循环 长度 包含
7.set 集合(无序且不重复的元素集合)
# 有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合 pythons={‘alex‘,‘egon‘,‘yuanhao‘,‘wupeiqi‘,‘gangdan‘,‘biubiu‘} linuxs={‘wupeiqi‘,‘oldboy‘,‘gangdan‘} # 求出即报名python又报名linux课程的学员名字集合 print(pythons & linuxs) # 求出所有报名的学生名字集合 print(pythons | linuxs) # 求出只报名python课程的学员名字 print(pythons - linuxs) # 求出没有同时这两门课程的学员名字集合 print(pythons ^ linuxs)
#去重,无需保持原来的顺序 l=[‘a‘,‘b‘,1,‘a‘,‘a‘] print(set(l)) #去重,并保持原来的顺序 #方法一:不用集合 l=[1,‘a‘,‘b‘,1,‘a‘] l1=[] for i in l: if i not in l1: l1.append(i) print(l1) #方法二:借助集合 l1=[] s=set() for i in l: if i not in s: s.add(i) l1.append(i) print(l1) #同上方法二,去除文件中重复的行 import os with open(‘db.txt‘,‘r‘,encoding=‘utf-8‘) as read_f, open(‘.db.txt.swap‘,‘w‘,encoding=‘utf-8‘) as write_f: s=set() for line in read_f: if line not in s: s.add(line) write_f.write(line) os.remove(‘db.txt‘) os.rename(‘.db.txt.swap‘,‘db.txt‘) #列表中元素为可变类型时,去重,并且保持原来顺序 l=[ {‘name‘:‘egon‘,‘age‘:18,‘sex‘:‘male‘}, {‘name‘:‘alex‘,‘age‘:73,‘sex‘:‘male‘}, {‘name‘:‘egon‘,‘age‘:20,‘sex‘:‘female‘}, {‘name‘:‘egon‘,‘age‘:18,‘sex‘:‘male‘}, {‘name‘:‘egon‘,‘age‘:18,‘sex‘:‘male‘}, ] # print(set(l)) #报错:unhashable type: ‘dict‘ s=set() l1=[] for item in l: val=(item[‘name‘],item[‘age‘],item[‘sex‘]) if val not in s: s.add(val) l1.append(item) print(l1) #定义函数,既可以针对可以hash类型又可以针对不可hash类型 def func(items,key=None): s=set() for item in items: val=item if key is None else key(item) if val not in s: s.add(val) yield item print(list(func(l,key=lambda dic:(dic[‘name‘],dic[‘age‘],dic[‘sex‘]))))
其他:
1、enumrate 为可迭代的对象添加序号
user=[‘tom‘,‘rose‘,‘jack‘] for k,v in enumerate(user): print(k,v) """ 0 tom 1 rose 2 jack """ user=[‘tom‘,‘rose‘,‘jack‘] for k,v in enumerate(user,25): print(k,v) """ 25 tom 26 rose 27 jack """
2.for循环
user=[‘tom‘,‘rose‘,‘jack‘] for item in user: print(item) """ tom rose jack """
3.range范围
for item in range(10): print(item) """ 0 1 2 3 4 5 6 7 8 9 """ for item in range(5,10): print(item) """ 5 6 7 8 9 """ for item in range(5,10,2): print(item) """ 5 7 9 """ for item in range(5,10,-2): print(item) """ 没有任何效果 """ for item in range(10,5,2): print(item) """ 没有任何效果 """ for item in range(10,5,-2): print(item) """ 10 8 6 """
4.注释
当行注视:# 被注释内容,多行注释:""" 被注释内容 """
5.文件头
#!/usr/bin/env python # -*- coding: utf-8 -*-
6.变量规范
命名:下划线(推荐使用) user_num=20 #1. 变量名只能是 字母、数字或下划线的任意组合 #2. 变量名的第一个字符不能是数字 #3. 关键字不能声明为变量名[‘and‘, ‘as‘, ‘assert‘, ‘break‘, ‘class‘, ‘continue‘, ‘def‘, ‘del‘, ‘elif‘, ‘else‘, ‘except‘, ‘exec‘, ‘finally‘, ‘for‘, ‘from‘, ‘global‘, ‘if‘, ‘import‘, ‘in‘, ‘is‘, ‘lambda‘, ‘not‘, ‘or‘, ‘pass‘, ‘print‘, ‘raise‘, ‘return‘, ‘try‘, ‘while‘, ‘with‘, ‘yield‘]
7.id value type (等号比较的是value,is比较的是id)
可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典
不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)
str1=‘hello world‘ str2=‘hello world‘ print(id(str1)) #8205552 print(id(str2)) #8205552 print(str1 is str2) #True print(str1==str2) #True str1=‘22‘ str2=22 print(id(str1)) #12234008 print(id(str2)) #1403847792 print(str1 is str2) #False print(str1==str2) #False
以上是关于Python基本数据类型的主要内容,如果未能解决你的问题,请参考以下文章