四 数据类型

1.数字类型

# 1. 整型int
======================================基本使用======================================
# 1、用途:记录年龄、等级、号码等

# 2、定义方式
age=10 # age=int(10)

类型转换
print(int(3.1))
res=int('1111111')
print(res,type(res))


res=float('111111.1')
print(res,type(res))

了解(**)
十进制转成。。。进制
print(bin(13))
print(oct(13))
print(hex(13))


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

======================================该类型总结====================================
存一个值

不可变
x=10
print(id(x))
x=11
print(id(x))


# 1. 浮点型float
======================================基本使用======================================
# 1、用途:记录身高、体重、薪资等

# 2、定义方式
salary=10.1 # salary=float(10.1)

类型转换
print(float(10))
print(float(1.1))
print(float('1.1'))

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

======================================该类型总结====================================
存一个值

不可变
x=10.3
print(id(x))
x=11.2
print(id(x))

2.字符串类型

#字符串类型str
# ======================================基本使用======================================
# 1、用途:记录描述性值的状态,比如名字、性别等

# 2、定义方式
msg='hello world' #msg=str('hello world')

# 类型转换: 可以把任意类型转成字符串类型
res1=str(10)
res2=str(10.3)
res3=str([1,2,3])
res4=str({'x':1}) #res4="{'x':1}"
print(type(res1))
print(type(res2))
print(type(res3))
print(type(res4))


# 3、常用操作+内置的方法
#优先掌握的操作:(*****)
#1、按索引取值(正向取+反向取) :只能取
msg='hello world'

print(type(msg[0]))
print(msg[-1])

msg[0]='H'


#2、切片(顾头不顾尾,步长)
msg='hello world'
print(msg[0]+msg[1]+msg[2])
print(msg[0:5])
print(msg[0:5:2]) #0 2 4
print(msg[0:]) #
print(msg[:]) #


print(msg[-1:-5:-1]) #-1 -2 -3 -4
print(msg[::-1]) #-1 -2 -3 -4

#3、长度len:统计的是字符的个数
msg='h你d'
print(len(msg))

#4、成员运算in和not in:判断一个子字符串是否存在与一个大字符串中
msg='hello world'
print('ho' in msg)
print('ho' not in msg)


#5、移除空白strip:移除字符串左右两边的某些字符
msg='      hello      '

print(msg.strip(' '))
print(msg.strip())
print(msg)

name=input('name>>>: ').strip() #name='egon'
pwd=input('password>>>: ').strip()

if name == 'egon' and pwd == '123':
    print('login successfull')
else:
    print('username or password error')

msg='***h**ello**********'
print(msg.strip('*'))

msg='*-=+h/ello*(_+__'
print(msg.strip('*-=+/(_'))


#6、切分split: 把有规律的字符串切成列表从而方便取值
info='egon:18:180:150'
res=info.split(':',1)
print(res)
print(res[1])


info='egon:18:180:150'
res=info.split(':')
print(res)

s1=res[0]+':'+res[1]+':'+res[2]+':'+res[3]
s1=''
for item in res:
    s1+=item
print(s1)


s1=':'.join(res)
print(s1)

':'.join([1,2,3,4,5])

#7、循环
for i in 'hello':
    print(i)



# 需要掌握的操作(****)
#1、strip,lstrip,rstrip
msg='*****hello****'
print(msg.strip('*'))
print(msg.lstrip('*'))
print(msg.rstrip('*'))

#2、lower,upper
msg='AaBbCc123123123'
print(msg.lower())
print(msg.upper())

#3、startswith,endswith
msg='alex is dsb'
print(msg.startswith('alex'))
print(msg.endswith('sb'))

#4、format的三种玩法
msg='my name is %s my age is %s' %('egon',18)
print(msg)

msg='my name is {name} my age is {age}'.format(age=18,name='egon')
print(msg)

# 了解
msg='my name is {} my age is {}'.format(18,'egon')
msg='my name is {0}{0} my age is {1}{1}{1}'.format(18,'egon')
print(msg)


#5、split,rsplit
cmd='get|a.txt|33333'
print(cmd.split('|',1))
print(cmd.rsplit('|',1))


#6、replace
msg='kevin is sb kevin kevin'
print(msg.replace('kevin','sb',1))

#7、isdigit #当字符串内为纯数字时结果为True
res='11111'
print(res.isdigit())
int(res)

age_of_bk=18
inp_age=input('your age: ').strip()
if inp_age.isdigit():
    inp_age=int(inp_age) #int('asdfasdfadfasdf')
    if inp_age > 18:
        print('too big')
    elif inp_age < 18:
        print('to small')
    else:
        print('you got it')
else:
    print('必须输入纯数字')



# 了解(**)
#1、find,rfind,index,rindex,count
print('xxxkevin is sb kevin'.find('kevin'))
print('xxxkevin is sb kevin'.index('kevin'))
print('xxxkevin is sb kevin'.rfind('kevin'))
print('xxxkevin is sb kevin'.rindex('kevin'))


res='xxxkevin is sb kevin'.find('kevasdfsadfin')
print(res)

res='xxxkevin is sb kevin'.index('kevasdfsadfin')



print('kevin is kevin is kevin is sb'.count('kevin'))

#2、center,ljust,rjust,zfill
print('egon'.center(50,'*'))
print('egon'.ljust(50,'*'))
print('egon'.rjust(50,'*'))
print('egon'.zfill(50,'*'))

#3、captalize,swapcase,title
print('my name is kevin'.capitalize())
print('AaBbCc'.swapcase())
print('my name is kevin'.title())

#4、is其他
name='egon123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成

print(name.islower())
print(name.isupper())
name='    '
print(name.isspace())
msg='I Am Egon'
print(msg.istitle())




# ======================================该类型总结====================================
# 存一个值

# 有序

# 不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
x='aaa'
print(id(x))
x='bbb'
print(id(x))

3.列表类型

# ======================================基本使用======================================
# 1、用途:记录多个值(同种属性)

# 2、定义方式:在[]内用逗号分隔开多个任意类型的值
l=['a','b','c'] #l=list(['a','b','c'])

# 类型转换
l=list('hello')
l=list({'x':1,'y':2})
print(l)


# 3、常用操作+内置的方法
#优先掌握的操作:
l=['a','b','c','d','e']
#1、按索引存取值(正向存取+反向存取):即可存也可以取
print(l[0])
print(l[-1])
print(id(l))
l[0]='A'
print(id(l))

l[4]='EEEEEE'
print(l)

l[5]='dddddd'


#2、切片(顾头不顾尾,步长)
l=['a','b','c','d','e']
print(l[1:4])
print(l)


#3、长度
l=['a','b','c','d','e']
print(len(l))

#4、成员运算in和not in
print('a' in l)
print('ssssss' not in l)

5、追加&插入
l=['a','b','c','d','e']
l.append(3333333)
l.append(44444)
print(l)

l.insert(0,11111111111)
print(l)

#6、删除
l=['a','b','c','d','e']
del l[0]
res=l.remove('b')
print(l)
print(res)

res=l.pop(0)
print(l)
print(res)

#7、循环
l=['a','b','c','d','e']
for item in l:
    print(item)

#需要掌握的操作
l=['a','b','a','c','d','e']
print(l.count('a'))

l=['a','b','a','c','d','e']
items=[1,2,3,4,5]
for item in items:
    l.append(item)

l.extend(items)
print(l)


l=['a','b','a','c','d','e']
print(l.index('a',2,5))
 l.index(123123123123123123123123)

if 123123123123123123123123 in l:
    print(l.index(123123123123123123123123))


l=['a','b','a','c','d','e']
l.reverse()
print(l)

l=[10,-1,3,11,9]
l.sort(reverse=True)
print(l)

print(l.extend(['a','b','c']))
print(l.pop(0))
print(l)


# ======================================该类型总结====================================
# 存多个值

# 有序

# 可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)


# 练习题
#1. 队列:先进先出
l=[]
# 入队
l.append('first')
l.append('second')
l.append('third')
print(l)
# 出队
print(l.pop(0))
print(l.pop(0))
print(l.pop(0))

#2. 堆栈:后进先出
# l=[]
# 入栈
# l.append('first')
# l.append('second')
# l.append('third')
# print(l)
# 出栈
print(l.pop())
print(l.pop())
print(l.pop())

4.元组类型

# 元组tuple:
# ======================================基本使用======================================
# 1、用途:元组就是一个不可变的列表

# 2、定义方式:在()内用逗号分隔开多个任意类型的元素
t=(1,2.2,'aa',('b','c'),['a','b','c']) # t=tuple(...)
print(type(t))
# 强调:
l=['a']
print(type(l),l[0])

t=('a',)
print(type(t))
print(t)

msg=('hello world')


# 类型转换
t1=tuple('hello')
t2=tuple([1,2,3])
print(t1)
print(t2)


# 3、常用操作+内置的方法
#优先掌握的操作:
t=(1,2.2,'aa',('b','c'),['a','b','c'])
#1、按索引取值(正向取+反向取):只能取
print(t[0])
print(t[-1])

t[0]=1111111111

#2、切片(顾头不顾尾,步长)
t=('a','b','c','e','f')
print(t[1:4])

#3、长度
print(len(t))
#4、成员运算in和not in
print('a' in t)

#5、循环
for item in t:
    print(item)

# 需要掌握的操作
t=('a','b','c','e','a','f')
print(t.index('a',1,5))
print(t.count('a'))

# ======================================该类型总结====================================
# 存多个值

# 有序

# 不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
t=('a','b','c')
print(id(t))
t=('A','B','C')
print(id(t))

t=('a',111,['b','c'])
print(id(t[0]),id(t[1]),id(t[2]))
t[2][0]='B'
# print(t)
print(id(t[0]),id(t[1]),id(t[2]))

t[0]='A'
t[2]=[1,2,3]

l=['a','b','c']
l[0]='A'

5.字典类型

#字典类型dict
# ======================================基本使用======================================
# 1、用途:记录多个值,列表是索引对应值,而字典是key对应值,其中key对value有描述性的功能

# 2、定义方式:在{}用逗号分隔开多个元素,每个元素都是key:value的形式,其中key可以不可变类型,通常是字符串类型
# 而value可以是任意类型
d={1:'aaa',2.2:'bbb','xxx':'ccc',(1,2,3):'dddd'} #d=dict(...)
print(d[(1,2,3)])

# 类转换
d=dict(x=1,y=2,z=3)
print(d)

items=[('name','egon'),('age',18),('gender','male')]
d={}
for item in items:
    d[item[0]]=item[1]

d=dict(items)
print(d)

# 了解
keys=['name','age','gender','height','weight']
d={}
for key in keys:
    d[key]=None

d={}.fromkeys(keys,None)
print(d,type(d))

# 3、常用操作+内置的方法
#优先掌握的操作:
#1、按key存取值:可存可取
dic={'name':'egon','age':18}
dic['xxxx']
print(dic.get('name'))
print(dic.get('xxx'))

print(dic['name'])
dic['name']='EGON'
dic['gender']='male'
print(dic)

l=['a','b','c']
l[0]='A'
l[4]='AAA'

#2、长度len
dic={'name':'egon','age':18}
print(dic)
print(len(dic))

#3、成员运算in和not in :是以字典的key为准的
dic={'name':'egon','age':18}
print('name' in dic)
print('egon' in dic)


#4、删除
dic={'name':'egon','age':18}
# del dic['name']
# print(dic)

res=dic.pop('name')
print(dic)
print(res)

res=dic.popitem()
print(res)

#5、键keys(),值values(),键值对items()
# 在python2
>>> dic={'name':'egon','age':18}
>>>
>>>
>>> dic.keys()
['age', 'name']
>>>
>>>
>>> dic.values()
[18, 'egon']
>>>
>>>
>>> dic.items()
[('age', 18), ('name', 'egon')]

# 在python3
>>> dic={'name':'egon','age':18}
>>>
>>> dic.keys()
dict_keys(['name', 'age'])
>>> dic.values()
dict_values(['egon', 18])
>>> dic.items()
dict_items([('name', 'egon'), ('age', 18)])
6、循环
dic={'name':'egon','age':18}
for k in dic:
    print(k)

for k in dic.keys():
    print(k)

for v in dic.values():
    print(v)

for k,v in dic.items(): #k,v=('name', 'egon')
    print(k,v)


# 需要掌握的操作
dic={'name':'egon','age':18}
dic={'name':'egon','age':18}
dic.update({'age':19,'gender':'male'})
print(dic)


# dic={'name':'egon','age':18}
# 当key存在时,不改原值,返回原值
res=dic.setdefault('name','EGON')
print(dic)
print(res)

# 当key不存在时,增加新值
res=dic.setdefault('gender','male')
print(dic)
print(res)



# ======================================该类型总结====================================
# 存多个值

# 无序

# 可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)

6.集合类型

# pythons=['张铁蛋','李铜淡','王金蛋','赵银胆','alex','kevin']
# linuxs=['oldboy','张铁蛋','赵银胆','alex','wxx']

res=[]
for stu in pythons:
    if stu in linuxs:
        res.append(stu)

print(res)


# 集合类型set
# ======================================基本使用======================================
# 1、用途:I: 关系运算  II:去重

# 2、定义方式:在{}内用逗号分隔开多个元素,但是元素的特点是
# I: 集合内的元素必须是不可变类型
# II: 集合内元素无序
# III: 集合内元素不能重复

s={1,'aaa',2,} #s=set(...)
print(s,type(s))

s=set()
print(s,type(s))

s={1,1,1,1,1,1,1,1,1,1,1,1,'a','a','a'}
print(s)

# 数据类型转换
res=set('hello')
print(res)

res=set([1,'a','b'])
print(res)

# 3、常用操作+内置的方法
#优先掌握的操作:
#1、长度len
#2、成员运算in和not in


pythons={'张铁蛋','李铜淡','王金蛋','赵银胆','alex','kevin'}
linuxs={'oldboy','张铁蛋','赵银胆','alex','wxx'}
#3、|合集:求所有报名的学生
print(pythons | linuxs)
print(pythons.union(linuxs))

#4、&交集:求同时报名两门课程的学生
print(pythons & linuxs)

#5、-差集: 求只报名python课程的学员
print(pythons - linuxs)
print(linuxs - pythons) #求只报名linux课程的学员

#6、^对称差集:求没有同时报名两门课程的学生
res=(pythons - linuxs) | (linuxs - pythons)
res=pythons ^ linuxs
print(res)

#7、==
s1={1,2,3}
s2={3,2,1}
print(s1 == s2)

# 注意:父子集描述的是一种包含与被包含的关系
8、父集:>=
9、子集:<=
s1={1,2,3}
s2={1,2,3,4}
print(s2 >= s1)
print(s1 <= s2)

# 需要掌握的
s1={1,2,3}
s1.update({3,4,5,6})
print(s1)

s1={1,'aa','bb',3}
print(s1.pop())

res=s1.remove('bbbbbb')
print(s1)
print(res)

s1.discard('bbb')
s1.add(4)
print(s1)
# ======================================该类型总结====================================
# 存多个值

# 无序

# 可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)


# 集合的去重
# 局限性
#1. 只能针对不可变类型
#2. 不能保证原来的顺序
names=['egon','egon','egon','alex','alex','kevin']

new_names=list(set(names))
print(new_names)


l=[
    {'name':'egon','age':18,'sex':'male'},
    {'name':'alex','age':73,'sex':'male'},
    {'name':'kevin','age':20,'sex':'female'},
    {'name':'egon','age':18,'sex':'male'},
    {'name':'egon','age':18,'sex':'male'},
]
new_l=[]
for dic in l:
    if dic not in new_l:
        new_l.append(dic)

print(new_l)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容