数据类型及内置方法

  1. 数字类型
  2. 字符串类型及内置方法
  3. 列表类型及内置方

int类型基本使用
1、用途:记录手机号,年龄,身份证号,手机号
2、定义方式:

age = 20  # age = int(20)

3、常用操作+内置的方法

int('asd')  # 报错 

int(11.1)  #报错,int只能将字符串是数字类型转为整型,小数点都不行

 

进制转换

1.其他进制转十进制

二进制转十进制 0 1

10  # 0*(2**0)+1*(2**1)=  2

print(int('10',2))

八进制转十进制 1 - 7

256  # 6*(8**0)+5*(8**1)+2*(8**2)= 174

print(int('256',8))

十六进制转十进制 1-9 A-F

215  # 5*(16**0)+1*(16**1)+2*(16**2) = 533

print(int('215',16))

2.十进制转其他进制

十进制转二进制

print(bin(2))  # 0b10

十进制转八进制

print(oct(174))  # 0o256

十进制转十六进制

print(hex(533))  # 0x215

该类型总结

存一个值
无序(有序:但凡有索引的数据都是有序的)
不可变


字符串类型

1、用途:记录描述性信息
2、定义方式 :用单引号或多因号括起来'','' '',''' '''

s = 'hello word'  # s = str(hello word)

3、常用操作+内置的方法 (所有的方法均不改变字符串原值)

按索引取值(正向,反向),只能取

print(s[0]) # >>> h
print(s[-1])  # >>> d

切片(可以正切,反切,指定步长)

print(s[0:5]) # >>> hello
print(s[0:8])   # 默认步长为1 >>> hello wo
print(s[0:8:2])  # hlow
print(s[1:5:-2])  # 步长为负数,取不出
print(s[-1:-5])  # 步长为正数,取不出
print(s[-1:-5:-2])  # 反向切片 >>> do

用  len() 统计字符串长度(字符个数)

s = ' '
print(len(s))  # >>> 1

成员运算 in和not in 判断数据是否其中

s = 'hello word'
print('he'in s)  # True
print(' 'in s)  # True
print('w'in s)  # True
print('H'in s)  # False
print('H'not in s)  # True

用 .strip() 默认去掉字符串两边的空格,不去中间的空格

s = 'hello word'
inp_s = input('your input>>>:').strip()
if s == inp_s:
    print('good')
# ps : 内置方法统一采用句点符‘.’号
s = 'hello word'
s1 = '   hello word   '.strip()
print(s == s1)  # True

 若要去掉其他符号,在.strip()的括号内加入你想去掉的符号,用引号引起来

s = 'hello word'
s1 = '#%^hello word#%  ^&'.strip('#$%^  &')
print(s == s1)  # True

 lstrip()去点字符串左边的符号 rstrip()去掉字符串右边的符号 l=left r=right

s = '&&&hello word####'
print(s.lstrip('&'))  #去掉左边 >>> hello word####
print(s.rstrip('#'))  #去掉右边 >>> &&&hello word

 split 字符串按某种分隔符(也可以是字符)切分成列表,进行进一步的操作

s = 'waller:123:a'
print(s.split(':'))  # >>> ['waller', '123', 'a']
name,psw,info = s.split(':')  # 把切分出来的列的值,解压赋值给name,psw,info
print(name,psw,info)  # >>> waller 123 a

#split 默认由左向右切分,rsplit由右向左切分,可以设定却分的次数
s = 'waller:name:age:20'
print(s.split(':'))  # 默认从左向右依次切分 >>> ['waller', 'name', 'age', '20']
print(s.split('e',1))  # 只切分一次 >>> ['wall', 'r:name:age:20']
print(s.rsplit('e',1))  # 从右向左切分一次 >>> ['waller:name:ag', ':20']

 join 把容器类型里的数据按某种符号或字符结合成一整个字符串 注意:容器里的数据类型必须是str类型

l = ['waller','123','a']
s = '|'.join(l)
print(s)  # >>> waller|123|a

 循环 字符串类似容器类型数据,可以用for循环取除字符

s = 'ab cd'
for item in s:
    print(item,end='') # >>> ab cd

 lower()把字符串转成全小写; upper()把字符串转成全大写

captalize,swapcase,title

 

s = 'Hello WoRD'
print(s.lower())  # >>> hello word
print(s.upper())  # >>> HELLO WORD
s = 'hElLo WorD'
# captalize 首字母大写
print(s.capitalize())  # >>> Hello word
# swapcase 大小写互换
print(s.swapcase())  # >>> HeLlO wORd
# title 每个单词首字母大写
print(s.title())  # >>> Hello Word

 starswith endswith

s = 'hello word'
print(s.startswith('h')) # True 判断字符串是以什么为开头的
print(s.startswith('he'))  # True
print(s.endswith('d'))  # True 判断字符串是以什么为结尾的

 .format 的格式化输出

# 按位置占位,谁先来谁先进
print('my name is {},my age is {}'.format('waller',20))  
# >>> my name is waller,my age is 20 print('my name is {},my age is {}'.format(20,'waller'))
# >>> my name is 20,my age is waller
# 按索引占位 print('my name is {0},my age is {1}'.format('waller',20))
# >>> my name is waller,my age is 20 print('my name is {1},my age is {0}'.format('waller',20))
# >>> my name is 20,my age is waller print('my name is {0},my age is {0}'.format('waller',20))
# >>> my name is waller,my age is waller
# 按指定位置占位 print('my name is {name},my age is {age}'.format(name = 'waller',age = 20))
# >>> my name is waller,my age is 20 print('my name is {age},my age is {name}'.format(name = 'waller',age = 20))
# >>> my name is 20,my age is waller

 replace 字符替换

s = 'waller is stutend for oldboy , waller in python10 class '
print(s.replace('waller','wong',1))  # .replace('被替换的字符','替换字符',替换次数) 默认全部替换
# >>> wong is stutend for oldboy , waller in python10 class 

 isdigit 判断字符串中包含的是否是纯数字

age = 25
num = 0
while True:
    if num == 3:
        an = input('是否继续 y/n>>>:').lower().strip()
        if an == 'y':
            num = 1
            continue
        else:
            break
    guess_age = input('>>>:').strip()
    if guess_age.isdigit:  # isdigit有布尔值属性
        guess_age = int(guess_age)
        if guess_age == age:
            print('猜对了')
            break
        else:
            print('猜错')
            num += 1
    else:
        print('请输入数字')

find,rfind 查找字符的索引值,找不到不报错,返回-1. 

index,rindex 查找字符的索引值,找不到则报错。

count 统计字符串出现的次数。

s = 'hello word'
print(s.find('w'))  # >>> 6
print(s.find('w',0,3))  # >>> -1 按索引范围查找

print(s.index('w'))  # >>> 6
print(s.index('w',0,3))  # >>> 报错 

print(s.count('o'))  # >>> 2

 center,ljust,rjust,zfill

s = 'hello word'
print(s.center(30,'*') )  # 居中 字符串加* 共30个字符,字符串居中显示
# >>> **********hello word**********
print(s.ljust(30,'%'))  # 居左
# >>> hello word%%%%%%%%%%%%%%%%%%%%
print(s.rjust(30,'$'))  # 居右
# >>> $$$$$$$$$$$$$$$$$$$$hello word
print(s.zfill(30))  # 居右 用 0 补位
# >>> 00000000000000000000hello word
expandtabs
s = 'w\tps'
print(s.expandtabs(10)) # 在字符串\t处插入空格
# >>> w         ps

 is数字系列

s1 = b'2'  # bytes 二进制
s2 = u'2'  # unicode,python3中无需加u就是unicode
s3 = ''  # 中文大写数字
s4 = ''  # 罗马数字
#isnumeric(): unicode,中文数字,罗马数字    只要是表示数字都识别
print(s2.isnumeric())  # True
print(s3.isnumeric())  # True
print(s4.isnumeric())  # True

#isdecimal(): unicode   只识别普通的阿拉伯数字
print(s2.isdecimal())  # True
print(s3.isdecimal())  # False
print(s4.isdecimal())  # False

# isdigit() :bytes,unicode    通常情况下使用isdigit就已经满足需求了
print(s1.isdigit())  # True
print(s2.isdigit())  # True
print(s3.isdigit())  # False

 

 该类型总结

存多个值 
有序(有序:但凡有索引的数据都是有序的)
不可变

 

列表类型

1、用途:记录多个值,可以是不同类型的值
2、定义方式 :[ ] 内用逗号分隔开

l_list = ['waller',123,'age',20,'info','wong']
l = list({'name':'waller','age':20,'info':'wong'})
# 列表内部就是for循环取值,然后一个个塞进列表
print(l)  # >>> ['name', 'age', 'info']
按索引取值(正取,反取),可存可取id不变
l_list = ['waller',123,'age',20,'info','wong']
print(l_list[0])  # 'waller'
print(l_list[-1])   # 'wong'
按索引切片 (步长)
print(l_list[0:3])  # ['waller', 123, 'age']
print(l_list[0:3:2])  # ['waller', 'age']
print(l_list[0:3:-1]) # []
print(l_list[-1:-3:-1])  # ['wong', 'info']

列表添加元素:

append,insert,extend

1.append 在列表内直接添加元素(追加)

l_list = ['waller',123,'age',20,'info','wong']
l_list.append('hoddy')
print(l_list)
# >>> ['waller', 123, 'age', 20, 'info', 'wong', 'hoddy']
2.insert 通过索引位置添加元素
l_list = ['waller',123,'age',20,'info','wong']
l_list.insert(1,'hobby')  # .insert(索引,添加的元素)
print(l_list)
# >>> ['waller', 'hobby', 123, 'age', 20, 'info', 'wong']
3.extend 添加容器类型数据 内部原理是for循环取值容器内的元素添加到另一个列表
l_list = ['waller',123,'age',20,'info','wong']
l = [1,2,'a']
l_list.extend(l)  # 把 l 添加到l_list
print(l_list)
# >>> ['waller', 123, 'age', 20, 'info', 'wong', 1, 2, 'a']

删除列表中的元素

del,pop, remove

del 按索引暴力删除元素,没有返回值 (可以删除任意类型数据的值)

l_list = ['waller',123,'age',20,'info','wong']
del l_list[0]
print(l_list)
# [123, 'age', 20, 'info', 'wong']

pop 按索引删除元素,有返回值 

l_list = ['waller',123,'age',20,'info','wong']
msg = l_list.pop(1)
print(l_list)  # >>> ['waller', 'age', 20, 'info', 'wong']
print(msg)  # >>> 123

remove 指定要删除的元素

l_list = ['waller',123,'age',20,'info','wong']
l_list.remove('wong')
print(l_list)  # >>> ['waller', 123, 'age', 20, 'info']
for 循环取值
l_list = ['waller',123,'age',20,'info','wong']
for i in l_list:
    print(i,end='/')  # >>> waller/123/age/20/info/wong/

 

len()  统计列表长度(元素个数)

l_list = ['waller',123,'age',20,'info','wong']
print(len(l_list))  # >>> 6
成员运算in和not in
l_list = ['waller',123,'age',20,'info','wong']
print('age'in l_list)  # True

 

count 查找数据出现的次数
#l_list = ['waller',123,'age',20,'info','wong']
l_list = ['waller',123,'age',20,'info','wong',20]
print(l_list.count(20))  # >>> 2
clear 清空列表 返回值是None 列表id不变
l_list = ['waller', 123, 'age', 20, 'info', 'wong', 20]
mgs = l_list.clear()
print(l_list)  # >>> []
print(mgs)  # >>> None
reverse 反转列表 返回值是None
l_int = [1,2,3,4,5]
l_int.reverse()
print(l_int) # >>> [5, 4, 3, 2, 1]
sort 排序列表 (升序) 只能对存的是纯数字(int,float)类型的列表进行sort,否则报错
l_int = [1,10,3,12,5,4.1,]
l_int.sort()
print(l_int)  # >>> [1, 3, 4.1, 5, 10, 12]

l_int.sort(reverse = True)  # 可以通过操作sort里的reverse参数使列表降序
print(l_int)  # >>> [12, 10, 5, 4.1, 3, 1]

 

 

 该类型总结

存多个值 
有序(有序:但凡有索引的数据都是有序的)
可变

 

tuple 元组类型

作用: 存多个元素,元素之间用逗号分隔开,元素可以是任意类型,元素不能被修改

定义:()内,逗号分隔开

t_tuple = ('waller',123,'age',20,['read','study'])
t_tuple = tuple(('waller',123,'age',20,['read','study']))  # for循环取值存到元组t_tuple中
tuple()  # 括号内只能放容器类型的数据,如放单个数字类型数据,需要加个逗号 tuple((1,))
# 索引取值(正取,反取)只能取 
# 切片
# 长度 len()
# 成员运算 in, not in
# 循环

索引取值
t_tuple = ('waller',123,'age',20,['read','study'])
print(t_tuple[0])  # >>> waller
print(t_tuple[-1])  # >>> ['read', 'study']

切片

t_tuple = ('waller',123,'age',20,['read','study'])
print(t_tuple[0:3:2])  # >>> ('waller', 'age')
print(t_tuple[0:-1])  # >>> ('waller', 123, 'age', 20)

长度 len 统计的是元组内元素的个数

t_tuple = ('waller',123,'age',20,['read','study'])
print(len(t_tuple))  # >>> 5

成员运算

t_tuple = ('waller',123,'age',20,['read','study'])
print('waller'in t_tuple)  # True

循环

t_tuple = ('waller',123,'age',20,['read','study'])
for i in t_tuple:
    if i == 123:
        continue
    print(i,end=' ')  # >>> waller age 20 ['read', 'study'] 

 该类型总结

存多个值 
有序(有序:但凡有索引的数据都是有序的)
不可变

 

 

dict 字典类型

作用:能存多个值,key:value 键值对,key只能是不可变类型,通常是字符串类型

定义:{}内用逗号分隔开的key:value键值对

三种定义方法
d1 = {'name':'waller','age':20,'hobby':['read','studt',123]}

d2 = dict(name = 'waller',age = 20,hobby = ['read','study',123])

l = [
    ['name','waller'],
    ['age',20],
    ['hobby',['read','study',123]]
]
d3 = {}
for i in l:  # 循环取出列表的值。
    k,v = i  # 把循环出来的列表解压赋值给k和v
    d3[k] = v  # 通过字典用key增加元素的方法
    print(d3)
# {'name': 'waller', 'age': 20, 'hobby': ['read', 'study', 123]}
通过key存取值 
#存值:当key不存在时,添加key:value,若key存在,则key的新value代替原value
d = {'name':'waller','age':20,'hobby':['read','studt',123]}
d['name'] = 'wong'
print(d)
# {'name': 'wong', 'age': 20, 'hobby': ['read', 'studt', 123]}
d['school'] = 'oldboy'
print(d)
# {'name': 'waller', 'age': 20, 'hobby': ['read', 'studt', 123], 'school': 'oldboy'}
#取值:当key存在,返回value,若key不存在则报错
d = {'name':'waller','age':20,'hobby':['read','studt',123]}
print(d['name'])  # >>> waller
print(d['school'])  # 报错
长度len():键值对的个数
d = {'name':'waller','age':20,'hobby':['read','studt',123]}
print(len(d))  # >>> 3
成员运算 in not in 只能判断key时否在字典中
d = {'name':'waller','age':20,'hobby':['read','studt',123]}
print('age'in d)  # True
删除 del  pop  通过key删除键值对
#del 通过key删除,没有返回值
d = {'name':'waller','age':20,'hobby':['read','studt',123]}
del d['name']
print(d)
# {'age': 20, 'hobby': ['read', 'studt', 123]}

#pop 通过key删除,返回值是 value
d = {'name':'waller','age':20,'hobby':['read','studt',123]}
res = d.pop('name')
print(d)
# {'age': 20, 'hobby': ['read', 'studt', 123]}
查询 所有键keys(),所有值values(),所有键值对items()
ps python2和python3有区别,py2中打印的是列表,占内存空间,py3返回的不占内存空间
d = {'name': 'waller', 'age': 20, 'hobby': ['read', 'studt', 123]}
print(d.keys())  # >>> dict_keys(['name', 'age', 'hobby'])
print(d.values())  # >>> dict_values(['waller', 20, ['read', 'studt', 123]])
print(d.items())  # 把它看作是元组,第一个值是key,第二个值是value
# >>> dict_items([('name', 'waller'), ('age', 20), ('hobby', ['read', 'studt', 123])])
get() 根据key取value
d = {'name': 'waller', 'age': 20, 'hobby': ['read', 'studt', 123]}
print(d.get('name'))  # >>> waller
print(d.get('school'))  # >>> None

print(d.get('name','我是返回的值'))  # >>> waller
print(d.get('school','我是返回的值'))  # >>> 我是返回的值
总结:
get方法取值时:
当key存在,则返回value,当key不存在时,不报错,返回None
get的第二个参数,当key存在时,第二个蚕食不打印,返回value,当key不存在时,打印第二个参数
#dict.fromkeys 快速创建字典
d = {'name':'waller','psw':123}
print(dict.fromkeys(d,11)) 
# >>> {'name': 11, 'psw': 11}
popitem 弹出键值对 从字典后面以元组的形式弹出键值对
d = {'name':'waller','psw':123}
print(d.popitem())  # >>> ('psw', 123)
dict.setdefault();dict.update() 新增键值对
dict.setdefault() 
d = {'name':'waller','psw':123}
print(d.setdefault('name','wong'))  # 当key存在时,不修改原值,返回原value
# >>> waller
print(d)  # >>> {'name': 'waller', 'psw': 123}
print(d.setdefault('sge',20))  # 当key不存在时,添加键值对,返回的时添加的value
# >>> 20
print(d)  # {'name': 'waller', 'psw': 123, 'sge': 20}
dict.update()
d1 = {'name':'waller','psw':123}
d2 = {'age':20}
d1.update(d2)
print(d1)  # {'name': 'waller', 'psw': 123, 'age': 20}
d3 = {'name':'wong'}  # 若键值对奴存在,则添加;若键值对存在,则顶替
d1.update(d3)
print(d1)  # {'name': 'wong', 'psw': 123, 'age': 20}
d1.update(age = 20)  # {'name': 'wong', 'psw': 123, 'age': 20}
循环 取的是key
d1 = {'name':'waller','psw':123}
for i in d1:
    print(i)

 该类型总结

存多个值 
无序(有序:但凡有索引的数据都是有序的)
可变

set 集合

作用:去重,关系运算

定义:{}内用逗号隔开多个元素,元素必须是不可变类型

特点:自动去重,无序,每个元素是不可变类型

s = {1,'1','a','b','c',2,2,2,2,2,}
print(s)  # >>> {1, 2, 'b', 'a', 'c', '1'}
#关系运算:
s1 = {'a','b',1,5,'d','w'}
s2 = {1,2,5,'a','c','e','w'}
#s1与s2中共同的元素 交集 :
#方法一:
l = []
for i in s1:
    for j in s2:
        if i == j:
            l.append(i)
print(l)

#方法二:
for itme in s1:  # for循环取出s1里的元素
    if itme in s2:  # 判断取出的元素如果也在s2中,则打印出来
        print(itme)

#方法三:
print(s1 & s2)  # 利用集合的方法,取出交集,取出的也是一个集合 {1, 'a', 5, 'w
 | 合集  s1与s2中的所有的元素
print(s1 | s2)  # {1, 2, 5, 'w', 'c', 'd', 'b', 'e', 'a'}
 - 差集
print(s1 - s2)  # {'d', 'b'}
print(s2 - s1)  # {2, 'e', 'c'}
 ^ 对称差集 s1和s2 不同元素的集合
print(s1 ^ s2)  # {2, 'e', 'b', 'c', 'd'}
父级,子集
s1 = {1,2,3,4,5}
s2 = {1,2,3}
# >= 父级:
print(s1 >= s2)  # True

# <= 子集
print(s2 <= s1)  #True
长度 len()
s1 = {'a','b',1,5,'d','w'}
print(len(s1))  # >>> 6
成员运算 in ,not in
s1 = {'a','b',1,5,'d','w'}
print('a' in s1)  # True

 该类型总结

存多个值 
无序(有序:但凡有索引的数据都是有序的)
不可变

 

posted @ 2019-07-03 19:15  waller  阅读(238)  评论(0编辑  收藏  举报