码迷,mamicode.com
首页 > 其他好文 > 详细

基础数据类型

时间:2018-12-18 11:04:37      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:首字母   style   key值   put   用法   span   pre   输入验证   一个   

一、数字 int

主要用于计算

# bit_length()    当十进制数用二进制表示时,最少使用的位数
v = 17
data = v.bit_length()
print(data)

二、布尔值bool

用于判断,只有两种:True,False
  真  1  True
  假  0  False

# int、bool、str之间转换

技术分享图片
# int --> str
i = 1
s = str(i)
print(i,type(i))
print(s,type(s))

# str --> int   只有纯数字字符串才能转化成int
s = ‘123‘
i = int(s)
print(i,type(i))
print(s,type(s))

# int --> bool      int非0 为True
i = 3
b = bool(i)
print(b)

# bool --> int
i = int(True)
i1 = int(False)
print(i,type(i),i1)

# str --> bool      非空字符串都是True
s = ‘‘
print(bool(s))
s = ‘ ‘
print(bool(s))
s = ‘0‘
print(bool(s))

b = False
s = str(b)
print(s,type(s))
print(b,type(b))
View Code
技术分享图片
while True:
    pass
while 1:        #效率高
    pass
while 1

三、字符串str

存储少量数据,进行操作
所有引号引起来的都是字符串

1、字符串的索引与切片

技术分享图片
# 索引    从0开始
s = ‘ABCDEFG‘
s1 = s[0]
print(s1)
s2 = s[2]
print(s2)
s21 = s[-1]
print(s21)
s22 = s[-3]
print(s22)
# 切片:   顾头不顾尾
s3 = s[0:4]
print(s3)       #ABCD
s4 = s[0:-1]
print(s4)       #ABCDEF
s5 = s[0:]
s51 = s[:]
print(s5,s51)       #ABCDEFG
s6 = s[0:0]
print(s6)       #空
s7 = s[0:5:2]       # s[首:尾:步长]
print(s7)       #ACE

s8 = s[0:4:-1]      #空  错误用法
s81 = s[4:0:-1]     #EDCB
s82 = s[4::-1]      #EDCBA
s83 = s[4::-2]      #ECA        反向加步长
print(s8)
print(s81,s82,s83)
s9 = s[-1:0:-1]     #GFEDCB
s91 = s[-1::-1]     #GFEDCBA
s92 = s[::-1]       #GFEDCBA
print(s9,s91,s92)
View Code

2、字符串的操作

技术分享图片
# 通用方法
s = ‘tian*he_LING sha5yong气ziying‘

l = len(s)      #长度
print(l)

c = s.count(‘h‘)        #数元素出现次数
print(c)
# 通用方法
技术分享图片
#
s = ‘tian*he_LING sha5yong气ziying‘

s1 = s.capitalize()     #首字母大写
print(s1)
s2 = s.upper()      #全大写
s21 = s.lower()     #全小写
print(s2,s21)
s3 = s.swapcase()       #大小写翻转
print(s3)
s4 = s.title()      #每个隔开(特殊字符或数字)的单词首字母大写(汉字也可以。。。)
print(s4)

s = ‘tian_He‘
s5 = s.center(20)       #居中,长度,空白填充
s51 = s.center(20,‘*‘)      #居中,长度,填充其他字符
print(s5)
print(s51)

s = ‘ling\tsha‘
s6 = s.expandtabs()     # \t前面的补全  默认将一个Tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个;多于则补全8的倍数
print(s6)

s = ‘tian_He‘
s7 = s.startswith(‘tia‘)        #以什么开头结尾  可切片
s71 = s.startswith(‘a‘,2,5)
s72 = s.endswith(‘2e‘)
s73 = s.endswith(‘n‘,1,4)
print(s7)
print(s71,s72,s73)

s = ‘tian*he_LING sha5yong气ziying‘
s8 = s.find(‘h‘)        #通过元素找索引,找不到返回-1
s81 = s.find(‘LI‘)
s82 = s.find(‘Li‘)
s83 = s.find(‘h‘,6,)
s831 = s.find(‘h‘,6)
print(s8,type(s8),s81,s82,s83,s831)
s88 = s.index(‘h‘)      #通过元素找索引,找不到会报错
print(s88,type(s88))

s = ‘   tian  he   ‘
s9 = s.strip()      #默认删除前后空格
print(s9)
s = ‘***tian*he****‘
s91 = s.strip(‘*‘)      #还可以删其他字符  或删左右  lstrip rstrip
s92 = s.lstrip(‘*‘)
s93 = s.rstrip(‘*‘)
print(s91)
print(s92)
print(s93)

s = ‘tianhe lingsha yongqi‘
l = s.split()       #以什么分割,形成一个不含有这个分割元素的列表  默认空格
print(l)            #int --> list
s = ‘:tianhe:lingsha:yongqi‘
l1 = s.split(‘:‘)
l2 = s.split((‘a‘))
print(l1)
print(l2)

# format()的三种用法,格式化输出
s = ‘我叫{},今年{},爱好{},重复一下我叫{}‘.format(‘天河‘,18,‘shanzhu‘,‘天河‘)
print(s)
s = ‘我叫{0},今年{1},爱好{2},重复一下我叫{2}‘.format(‘天河‘,‘18‘,‘shanzhu‘,‘天河‘)
print(s)
s = ‘我叫{name},今年{age},爱好{hobby},重复一下我叫{name}‘.format(hobby = ‘shanzhu‘,name = ‘天河‘,age = 18,)
print(s)

s = ‘的方法的官方给个说法巅峰时代vd 的方法的方法‘
s10 = s.replace(‘方法‘,‘天河‘)      #替换  (old, new, count)
print(s10)
s101 = s.replace(‘方法‘,‘天河‘,2)
print(s101)

# is系列
s = ‘tianhe123‘
print(s.isalnum())      #字符串由字母或数字组成
print(s.isalpha())      #字符串只由字母组成
print(s.isdigit())      #字符串只由数字组成
View Code
技术分享图片
#
s = ‘tianhe‘
for i in s:     #for循环  可查询字符串中是否含有某元素
    print(i)

s = ‘tian苍井空he‘
if ‘苍井空‘ in s:
    print(‘您的评论有敏感词。。。‘)
for in
技术分享图片
# 使用范例
s_str = ‘asDF23‘
you_input = input(‘请输入验证码,不区分大小写:‘)
if you_input.upper() == s_str.upper():
    print(‘输入成功‘)
else:
    print(‘请重新输入‘)

user = input(‘请输入用户名:‘)
if user.strip() == ‘天河‘:
    print(‘恭喜天河发财‘)
# 使用范例

 四、列表  list    []

储存大量数据,储存不同的数据类型
以[]括起来,每个元素之间以逗号隔开;列表有序,有索引值,可切片

1、列表的索引和切片

技术分享图片
li = [‘tianhe‘,[1,2,3],‘lingsha‘,‘勇气‘,1,2,3,‘shanzhu‘]

l1 = li[0]
print(l1)
l2 = li[1]
print(l2)
l3 = li[1:5]
print(l3)
View Code

2、增    append insert extend

技术分享图片
li = [‘tianhe‘,[1,2,3],‘lingsha‘,‘勇气‘,1,2,3,‘shanzhu‘]

li.append(‘梦璃‘)     #增加到最后
print(li.append(‘梦璃‘))      #None
print(li)
li.append(1)
print(li)

li.insert(1,‘mengli‘)       #按照索引增加
print(li)

li.extend(‘梦璃‘)     #迭代的增
li.extend([1,2,3,4])
print(li)
View Code

3、删    pop remove clear del

技术分享图片
li = [‘tianhe‘,[1,2,3],‘lingsha‘,‘勇气‘,1,2,3,‘shanzhu‘]

print(li.pop(1))        #有返回值  返回删除元素
print(li.pop())     #默认删除最后一个
print(li)

li.remove(‘tianhe‘)     #按元素删除
print(li)

li.clear()      #清空  剩余空列表
print(li)

del li      #删除列表  li列表不存在
print(li)
del li[1]       #切片删
print(li)
del li[1:3]
print(li)
View Code

4、改    索引 切片

技术分享图片
li = [‘tianhe‘,[1,2,3],‘lingsha‘,‘勇气‘,1,2,3,‘shanzhu‘]

li[0] = ‘天青‘        #改
li[0] = [1,2,4]

li[0:2] = ‘紫英‘      #切片
li[0:2] = ‘紫英asd‘
li[0:3] = [1,2,3,‘xuanxiao‘,‘suyu‘]
print(li)
View Code

5、查    for 切片

技术分享图片
li = [‘tianhe‘,[1,2,3],‘lingsha‘,‘勇气‘,1,2,3,‘shanzhu‘]

for i in li:        #循环查
    print(i)
    
print(li[0:2])      #切片查
View Code

6、其他操作

技术分享图片
li = [‘tianhe‘,[1,2,3],‘lingsha‘,‘勇气‘,1,2,3,‘shanzhu‘]

l = len(li)     #列表长度
print(l)

num = li.count(‘lingsha‘)       #数某个元素在列表中出现次数
print(num)

i = li.index(‘lingsha‘)     #从列表中找出某个值第一个匹配项的索引位置
i2 = li.index(‘lingsha‘,3,5)        #可切片  找不到报错
print(i,i2)
len count index
技术分享图片
li = [2,4,8,5,9,3,5]

li.sort()       #排序  纯数字才行    无返回值
print(li)
li.sort(reverse=True)       #反向排序
print(li)

li.reverse()        #反转    无返回值
print(li)
sort reverse

7、列表的嵌套

技术分享图片
li = [‘tianhe‘,‘梦璃‘,[1,2,3,‘lingsha‘],1,2,3,‘shanzhu‘]

print(li[1][1])
name = li[0].capitalize()
print(name)

li[1] = ‘林夕璃‘
print(li[1].replace(‘梦‘,‘meng‘))
li[1] = li[1].replace(‘梦‘,‘meng‘)
li[2][3] = li[2][3].upper()
print(li)
View Code

8、列表与字符串之间转换

S.join(iterable) --> str

str --> list   split()

技术分享图片
li = [‘tianhe‘,‘lingsha‘,‘勇气‘,‘shanzhu‘]
s = ‘‘.join(li)
s1 = ‘++‘.join(li)
print(s)
print(s1)

s = ‘tianhe‘
s1 = ‘_‘.join(s)
li = s1.split(‘_‘)
print(s1)
print(li)
View Code

五、元组  tuple   ()

只读列表,可循环查询,可切片

儿子不能改,孙子可能可以改

技术分享图片
tu = (1,2,3,‘tianhe‘,[2,3,4,‘mengli‘],‘lingsha‘)

print(tu[3])
print(tu[1:4])

for i in tu:
    print(i)

tu[4][3] = tu[4][3].upper()
tu[4].append(‘yongqi‘)
tu[3] = tu[3].upper()       #报错
print(tu)
View Code

 如果元组里面只有一个元素且不加逗号,那此元素是什么类型就是什么类型

技术分享图片
tu1 = (1)
tu2 = (1,)
print(tu1,type(tu1))
print(tu2,type(tu2))

tu1 = ([1])
tu2 = ([1],)
print(tu1,type(tu1))
print(tu2,type(tu2))
View Code

六、字典  dict  {}

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据

dict  key : 必须是不可变数据类型,可哈希 int str tuple
   value: 任意数据类型
dict 优点 :二分查找去查询
      存储大量的关系型数据
   特点 :无序的 (3.5及以前无序)

1、增

技术分享图片
dic1 = {‘name‘:‘tianhe‘,‘age‘:18,‘sex‘:‘male‘}

dic1[‘high‘] = 185      #没有键值对,添加
dic1[‘age‘] = 16        #有键值对,value覆盖
print(dic1)
    
dic1.setdefault(‘hobby‘,‘shanzhu‘)        #有键值对,不做任何改变,没有则添加
dic1.setdefault(‘hobby‘)          #如果只有key  对应value 为 none
dic1.setdefault(‘name‘,‘ziying‘)
print(dic1)
View Code

2、删

技术分享图片
dic1 = {‘name‘:‘tianhe‘,‘age‘:18,‘sex‘:‘male‘}

print(dic1.pop(‘age‘))      #有返回值  按key删除  返回value
# print(dic1.pop(‘hobby‘))    #key 不存在  报错
print(dic1.pop(‘hobby‘,None))       #可设置返回值
print(dic1.pop(‘hobby‘,‘没有此键‘))
print(dic1)

print(dic1.popitem())       #随机删除  返回元组(key,value)删除的键值对
print(dic1)

dic1.clear()        #清空字典
print(dic1)

del dic1[‘name‘]        #按key删除   key不存在 报错
del dic1        #删除字典
print(dic1)
View Code

3、改

技术分享图片
dic1 = {‘name‘:‘tianhe‘,‘age‘:18,‘sex‘:‘male‘}

dic1[‘age‘] = 16        #覆盖
print(dic1)

dic2 = {‘name‘:‘lingsha‘,‘high‘:170}
dic2.update(dic1)       #将dic1所有的键值对覆盖添加(key相同覆盖,没有的添加)到dic2中
print(dic2)
View Code

4、查

技术分享图片
dic1 = {‘name‘:‘tianhe‘,‘age‘:18,‘sex‘:‘male‘}

print(dic1.keys(),type(dic1.keys()))        #<class ‘dict_keys‘> 就是dict_keys类型,可迭代的
print(dic1.values(),type(dic1.values()))
print(dic1.items(),type(dic1.items()))

for i in dic1:      #默认key
    print(i)
for i in dic1.keys():
    print(i,type(i))        #str
for i in dic1.values():
    print(i)
for i in dic1.items():
    print(i,type(i))        #元组
for k,v in dic1.items():
    print(k,v)

print(dic1[‘age‘])      #按键查询
# print(dic1[‘age1‘])     #报错

print(dic1.get(‘age‘))      #按键查询
print(dic1.get(‘age‘,‘没有此键‘))       
print(dic1.get(‘age1‘))     #没有返回None  可设定返回值
print(dic1.get(‘age1‘,‘没有这个键‘))
View Code

5、嵌套

技术分享图片
dic = {
    ‘name‘:[‘tianhe‘,‘lingsha‘,‘yongqi‘],
    ‘xian4‘:{
        ‘time‘:‘2007‘,
        ‘money‘: 50,
        ‘owner‘:‘ruanxing‘
    },
    ‘age‘:11
}

dic[‘age‘] = 18
print(dic)
print(dic[‘name‘])
dic[‘name‘].append(‘mengli‘)
print(dic)
dic[‘name‘][1] = dic[‘name‘][1].upper()
print(dic)
dic[‘xian4‘][‘type‘] = ‘RPG‘
print(dic)
View Code

 七、集合  set  set()

可变的数据类型,他里面的元素必须是不可变的数据类型,无序,不重复

1、创建

技术分享图片
set1 = set({1,2,3})
print(set1)

# set2 = {1,2,[2,3],{‘name‘:‘tianhe‘}}      #错误
set2 = {1,2,‘tianhe‘,} 
print(set2)
View Code

2、增

技术分享图片
set1 = {‘tianhe‘,‘lingsha‘,‘yongqi‘,‘yongqi‘,‘mengli‘}

set1.add(‘ziying‘)        #按元素
print(set1)

set1.update(‘ziying‘)       #迭代的增
print(set1)
View Code

3、删

技术分享图片
set1 = {‘tianhe‘,‘lingsha‘,‘yongqi‘,‘yongqi‘,‘mengli‘,‘ziying‘}

set1.remove(‘ziying‘)     #按元素删除
print(set1)

print(set1.pop())      #随机删  有返回值
print(set1)

set1.clear()      #清空集合
print(set1)

del set1      #删除集合
print(set1)
View Code

4、查

技术分享图片
set1 = {‘tianhe‘,‘lingsha‘,‘yongqi‘,‘yongqi‘,‘mengli‘,‘ziying‘}

for i in set1:
    print(i)
View Code

5、交差并补等

技术分享图片
# 交集  & intersection
set1 = {1,2,3,4}
set2 = {3,4,5,6}
print(set1 & set2)
print(set1.intersection(set2))
# 交集 & intersection
技术分享图片
# 并集  |  union
set1 = {1,2,3,4}
set2 = {3,4,5,6}
print(set1 | set2)
print(set1.union(set2))
# 并集 | union
技术分享图片
# 差集  -  difference
set1 = {1,2,3,4}
set2 = {3,4,5,6}
print(set1 - set2)
print(set1.difference(set2))
# 差集 - difference
技术分享图片
# 对称差集  ^  symmetric_difference
# print(set1 ^ set2 == (set1 | set2) - (set1 & set2))
set1 = {1,2,3,4}
set2 = {3,4,5,6}
print(set1 ^ set2)
print(set1.symmetric_difference(set2))
# 对称差集 ^ symmetric_difference
技术分享图片
# 子集与超集
set1 = {1,2,3,4}
set2 = {1,2,3,4,5,6}
print(set1 < set2)
print(set1.issubset(set2))      # set1是set2的子集
print(set2 > set1)
print(set2.issuperset(set1))    # set2是set1的超集
# 子集与超集

6、不可变集合,让集合变成不可变类型 frozenset

技术分享图片
s1 = {1,2,3}
print(s1,type(s1))
s = frozenset(‘tianhe‘)
print(s,type(s))
View Code

7、去重

技术分享图片
li = [1,2,3,3,23,34,5,3,2,7,33,34]
set1 = set(li)
print(set1)
li = list(set1)
print(li)
View Code

# 基础数据类型总结

按储存空间的占用分(从低到高)
数字
字符串
集合:无序,无需存索引相关信息
元组:有序,需要存索引相关信息
   不可变
列表:有序,需要存索引相关信息
    可变,需要处理数据的增删改
字典:无序,需要存key与value映射的相关信息
    可变,需要处理数据的增删改

按存值个数区分
标量/原子类型: 数字,字符串
容器类型: 列表,元组,字典
按可变不可变区分
可变: 列表,字典,集合  不可哈希
不可变: 数字,字符串,元组,bool  可哈希
按访问顺序区分
直接访问: 数字
顺序访问(序列类型): 字符串,列表,元组
key值访问(映射类型): 字典

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 





 

基础数据类型

标签:首字母   style   key值   put   用法   span   pre   输入验证   一个   

原文地址:https://www.cnblogs.com/wuyinglianjianjue/p/10117906.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!