1.可变类型和不可变类型
可变型:值变了,但是id没有变:证明没有生成新的值,是在改变原来的值,原值是可以改变的,是可变类型
不可变型:值变了,id也跟着变了。证明是生成了新的值,而不是在改变原来的值,原值是不可以改变的,是不可变类型
如:
不可变类型
x=10
print(id(x))
x=20
print(id)(x))
结果:
1827106112
1827106144
可变类型
y=['a','b','c']
print(id(y))
y[0]='A'
print(y)
print(id(y))
运行结果:
2730771824392
['A', 'b', 'c']
2730771824392
2.数字类型
一、整型int
基本使用
1.用途 记录年龄\等级\各种号码
2. 定义方式:
age=18 (age=int(18))
x=int('123') #只能将纯数字的字符串转换成整型
print(type(x))
print(int(3.7)) 去掉小数部分 输出3
3.常用操作+内置方法
赋值\比较\算术运算 (在之前已经介绍整理过)
===============================================该类型总结(整型)===================================
存一个值
不可变(可变:值变,id不变,可变==不可被hash,不可变:值变,id也变,不可变可以被hash)
print(hash(10)) false
print(hash([1,2,3])) True
二、浮点型float
=================================================基本使用========================================
1.用途 记录身高\体重\薪资
2.定义方式
salary=1.8 #salary=float(1.8)
同样具有类型转换功能
x=float('1.8')
3.常用操作+内置方法
赋值\比较\算术
===============================================该类型总结========================================
存一个值
属于不可变类型、可被hash
了解的知识点:
复数
x=1-2i
print(x,type(x))
print(x,real) 打印复数的实部部分
print(x,imag) 打印复数的虚部部分
长整型
整型到一定长度之后就会变成长整型,现在只在python2中保留有长整型
其他进制=>十进制
十进制: 0-9
11 = 1*10^1 + 1*10^0
二进制: 0 1
11 = 1*2^1 + 1*2^0
八进制: 0-7
11 = 1*8^1+1*8^0
十六进制:0-9 A-F
11 = 1*16^1+1*16^0
十进制==>其他进制
print(bin(13)) 十进制==>二进制
print(oct(13)) 十进制==>八进制
print(hex(13)) 十进制==>十六进制
=============================================数字类型End========================================
三、字符串str
==============================================基本使用==========================================
1.用途:记录描述性的特征,比如名字\地址\性别
2.定义方式:在单引号\双引号\三引号中包含的一串字符
msg='aaa' #mag=str(aaa)
同样具有转换功能可以将任意类型转换成字符串
str(1)
str(1.8)
str([1,2,3])
3.常用的操作+内置方法
优先掌握的操作(掌握级别:★★★★★)
1.按照索引值(正向取+反向取);只能取不能改
msg='hello word'
print(msg[0]) h
print(msg[1]) e
print(msg[2]) l
print(msg[3]) l
print(msg[4]) o
以上都是正向取法,从左向右按照索引来取值
print(msg[-1]) d
print(msg[-2]) r
print(msg[-3]) o
print(msg[-4]) w
反向取法,从结尾开始取,反向取的时候从(-1)开始没有(-0)一说
只能取不可以更改验证
2.切片(顾头不顾尾,步长):想要从一个大字符串中切除一个小字符串
msg='allen is a boy'
print(mag[0:6]) 输出结果为:allen 取到前六个字符,步长不输入时默认为1
print(msg)
print(msg[0:5:2]) 取到索引为0 2 4的字符 输出为aln
了解部分(掌握级别:★★)
反向取值和步长正负代表的意义
msg='hello world'
print(msg[-1:-5:1]) 取不出字符
print(msg[-1:-5:-1]) dlro 反向取值 步长的正负代表取值往左还是往右取
print(msg[0:5:1]) hello
长度len
msg=‘你好 a’
print(len(msg)) msg所代表的的字符串中所含的字符个数即为长度
成员运算
msg=‘allen is a boy’
print('allen' in msg) True
print('a' not in msg) True
移除字符串两边的字符strip:默认去掉空格
pwd=' 123 '
res=pwd.strip('') 去掉123两边的空格
print(res)
输出结果为:123
pwd=input('请输入密码>>:').strip('') 可以在这里直接加上strip 防止手抖输入空格
if pwd==123
print('输入密码正确')
pwd="***********###*^123*%%******"
print(pwd.strip('#%^*')) 不管两边有什么字符在strip后面括号中输入之后都会被清除掉
不管两边有什么字符在strip后面括号中输入之后都会被清除掉,清除的机制是在遇到第一个字符时停止,即********1*23*****输出时输出为:1*23
切分split:针对有规律字符串按照某个字符切成列表
info='sdfa|18|female'
in1=info.split('|',1) 以'|'把info切分成列表.后边的1代表当前切分的次数为1次,不输入切分次数时默认
print(in1)
in2=info.split('|') 全部切分
输出结果分别为:['sdfa','18|female'] ['sdfa','18','female']
循环;
msg='hello'
for item in msg:
print(item)
输出结果为:
h
e
l
l
o
==============================================该类型总结========================================
存一个值
有序(有序无序的判断根据数据类型是否具有索引来判断,有索引为有序的,无索引为无需的)
了解的操作(掌握等级:★★)
1、find(查找指定字符串的索引值,默认从左边开始寻找,可以指定查找范围,寻找不到时,程序不会报错,给一个返回值(-1))
rfind(从右边开始查找)
index(查找指定字符串的索引值,默认从左边开始寻找,可以指定查找范围,寻找不到时,程序会报错并终止运行))
rindex(从给右边开始查找)
count(计数:记录指定字符在字符串中出现的次数)
msg='hello worldaa'
print(msg.index('wo'))
print(msg.index('wo',0,3))
print(msg.find('wo',0,3))
print(msg.find('xxxxxxx'))
print(msg.index('xxxxxxx'))
print(msg.count('l'))
2、center(指定字符位于指定长度字符串的中心位置)
ljust(左对齐)
rjust(右对齐)
zfill(使用0填充,默认右对齐)
name=input('>>: ').strip()
print('egon'.center(50,'=')) 输出:=======================egon=======================
print(('%s' %name).center(50,'-'))
print('egon'.ljust(50,'=')) 输出:egon==============================================
print('egon'.rjust(50,'=')) 输出:==============================================egon
print('egon'.zfill(50)) 输出:0000000000000000000000000000000000000000000000egon
3、expandtabs(填充指定数量的特殊字符)
print('hello\tworld'.expandtabs(5)) 输出:hello world
4、captalize(开头首字母大写)
swapcase(大小写转换)
title (标题性,即每个单词首字母大写)
print('hello world'.capitalize()) 输出:Hello world
print('Hello world'.swapcase()) 输出:hELLO WORLD
print('Hello world'.title()) 输出:Hello World
5、is数字系列
num1=b'4' #bytes(字节类型)
num2=u'4' #unicode,python3中无需加u就是unicode
num3='四' #中文数字
num4='Ⅳ' #罗马数字
isdigit: bytes,str (只能判断bytes和unicode类型)
print(num1.isdigit()) 输出:True
print(num2.isdigit()) 输出:True
print(num3.isdigit()) 输出:False
print(num4.isdigit()) 输出:False
isdecimal:str 只能判断unicode类型,一般不使用
print(num2.isdecimal()) 输出:True
print(num3.isdecimal()) 输出:False
print(num4.isdecimal()) 输出:False
isnumberic:str,中文\罗马 可以用于判断中文或者罗马字符,银行的应用程序开发会用到
print(num2.isnumeric()) 输出:False
print(num3.isnumeric()) 输出:True
print(num4.isnumeric()) 输出:True
6、is其他
print('aaasdfaA'.isalpha()) 判断是否是纯字母组成的字符串
print('aaasdfaA123'.isalnum()) 判断是否是字母或数字组成
print('aaasdfaA'.isalnum()) 判断是否是字母或数字组成
print('123'.isalnum())
print(' '.isspace()) 判断字符串是否是有空格组成
print(' 12'.isspace())
四、列表类型
==============================================基本使用===========================================
1.用途 记录多个值,比如人的多个爱好
2.定义方式,在[]中使用逗号隔开多个任意类型的值
li=[1,2,3] #li=list([1,2,3])
x1=list('hello') ['h', 'e', 'l', 'l', 'o']
x2=list({'a':1,'b':2,'c':3})
print(x1)
print(x2) 从字典中取时,取到的是key ['a', 'b', 'c']
3、常用操作+内置的方法
优先掌握的操作(掌握级别:★★★★★):
1、按索引存取值(正向存取+反向存取):即可存也可以取
li=['a','b','c','d']
print(li[0]) 按照索引正向取出 a
print(li[-1]) 反向取值取出 d
li[-1]='D' 将取出的 d 换为 D
print(li) ['a','b','c','D']
# li[4]='e'
del li[0] 将索引为0的元素删除掉
print(li) ['b','c','d']
2、切片(顾头不顾尾,步长)
li=['a','b','c','d']
print(li[0:3])
3、长度
print(len(li))
4、成员运算in和not in
users=['allen','michale','maria','jane',[1,2,3]]
print('allen' in users) True
print([1,2,3] in users) True
print(1 in users) False
5、追加
li=['a','b','c','d']
print(id(li))
li.append('e') 输出结果为:['a','b','c','d','e']
li.append([1,2,3]) 输出结果为:['a','b','c','d',[1,2,3]] 在这里可以看出append追加
print(li,id(li)) 的时候是将append后边括号里边的内容作为一个整体添加进去的,不如extend好
用
6、删除
按照元素值去单纯地删除某个元素
li=['a','b','c','d']
del li[1] 删除列表中索引为1的元素
res=li.remove('c') 删除列表中的'c'元素
print(li)
print(res)
6.pop:按照元素的索引去删除某个元素并且拿到该元素作为返回值
li=['a','b','c','d']
res=li.pop(1)
print(li) 输出为:['a', 'c', 'd']
print(res) 输出为:b
7、循环
li=['a','b','c','d']
for item in li:
print(item)
==============================================该类型总结==========================================
存多个值=
有序
可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
print(hash([1,2,3])) False
需要掌握的操作(掌握级别:★★★★)
extend
和append追加类似但是extend往列表中添加新元素时,如果添加的为多个值组成的(比如列表),extend会将其分解为单个值然后添加到所需要的列表后面.
li=['a','b','c','d','c','e']
print(li.count('c')) count表示计数,在这里表示c在变量li中出现的次数
li.extend([1,2,3]) 输出结果为['a','b','c','d','c','e',1,2,3]
li.append([1,2,3]) 输出结果为['a','b','c','d','c','e',[1,2,3]]
print(li)
print(li.index('z')) index表示索引此行的输出是行不通的,因为"z"不在列表 li 中,
print(li.index('b')) b在列表中的索引为1 所以此行输出为1
print(li.index('d',0,3)) 0和3表示查找d的开始和结束的索引区间
li.insert(1,'egon') insert表示插入,第一个参数表示在哪个索引后边插入:'egon'
print(li) 此行输出结果为:['a', 'egon', 'b', 'c', 'd', 'c', 'e']
li=[3,1,9,11]
li.reverse() reverse表示反转,但是不会进行自动排序
print(li) 此行输出结果为:[11, 9, 1, 3]
li.sort() sort表示排序,默认会将里表中的元素按照从小到大的顺序进行排序此行输出结果为:[1,3,9,11]
li.sort(reverse=True) 经过renerse反转过后将li按照从大到小的顺序排列
print(li) 此行输出结果为[11,9,3,1]
队列: 先进先出(先进入的先出来)
q=[] 创建一个新的空列表
# 入队
q.append('first') 使用append命令分别将'first'.'second','third'添加到空列表中
q.append('second')
q.append('third')
print(q) 依据先进先出的原则,输出结果为:['first', 'second', 'third']
# 出队
print(q.pop(0)) 将first取出后列表中剩下两个元
素:['second','third'],此时'second'的索引值变为零
print(q.pop(0))
print(q.pop(0))
pop为取值的命令,并且会给一个返回值,pop后边的0表示要取出的元素在列表中的
索引值
堆栈: 先进后出
q=[] 创建一个新的空列表
入栈
q.append('first') 依据先入后出的原则,入栈的输出结果为:['first', 'second', 'third']
q.append('second')
q.append('third')
# 出栈
print(q.pop(-1))
print(q.pop(-1))
print(q.pop(-1)) 依据先入后出的原则,出栈的结果为:third
second
first