码迷,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
迷上了代码!