基础数据类型用法
一、概述:
1 什么是数据?
x=10,10是我们要存储的数据
2 为何数据要分不同的类型
数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示
3 数据类型
数字
字符串
列表
元组
字典
集合
二、基础数据类型。
2.1. 数字 int
数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以:
1 #bit_length() 当十进制用二进制表示时,最少使用的位数 2 v = 11 3 data = v.bit_length() 4 print(data)
2.2布尔值bool。
布尔值就两种:True,False。就是反应条件的正确与否。
真 1 True。
假 0 False。
2.3字符串str。
2.3.1、字符串的索引与切片。
索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。
a = 'ABCDEFGHIJK' print(a[0]) print(a[3]) print(a[5]) print(a[7])
切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾腚)。
1 a = 'ABCDEFGHIJK' 2 print(a[0:3]) 3 print(a[2:5]) 4 print(a[0:]) #默认到最后 5 print(a[0:-1]) #-1就是最后一个 6 print(a[0:5:2]) #加步长 7 print(a[5:0:-2]) #反向加步长
2.3.2、字符串常用方法
#captalize,swapcase,title
a1 = 'lao Nan hAI'
print(a1.capitalize()) #首字母大写
print(a1.swapcase()) #大小写翻转
print(a1.title()) #每个单词的首字母大写
# 内同居中,总长度,空白处填充
ret2 = a1.center(20,"*") 
print(ret2)
#显示字符串中的元素出现的个数。
ret3 = a1.count("a",0,4) # 可切片
print(ret3)
a2 = "hqw\t"
#\t前面的补全
# 默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个,如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个。
ret4 = a2.expandtabs() 
print(ret4) 
#startswith #判断是否以...开头
#endswith #判断是否以...结尾
a4 = "dkfjdkfasf54"
ret4 = a4.endswith('jdk',3,6)  # 顾头不顾腚
print(ret4)  # 返回的是布尔值
ret5 = a4.startswith("kfj",1,4) 
print(ret5) # 返回的是布尔值
#寻找字符串中的元素是否存在
ret6 = a4.find("fjdk",1,6) #可切片
print(ret6)  # 返回的找到的元素的索引,如果找不到返回-1
ret61 = a4.index("fjdk",4,6) 
print(ret61) # 返回的找到的元素的索引,找不到报错。
#split 以什么分割,最终形成一个列表此列表不含有这个分割的元素。
ret9 = 'title,Tilte,atre,'.split('t')  #可在't'后加一个数字参数x,代表从前面数x不含
print(ret9) 
ret91 = 'title,Tilte,atre,'.rsplit('t',1) #数字代表从后面数一个
print(ret91)
  
#format的三种玩法 格式化输出
res='{} {} {}'.format('egon',18,'male')  
res='{1} {0} {1}'.format('egon',18,'male') 
res='{name} {age} {sex}'.format(sex='male',name='egon',age=18) #strip
#strip 默认清除空格
name='*egon**'
print(name.strip('*'))
print(name.lstrip('*'))
print(name.rstrip('*'))
#replace 替换字符
name='alex say :i have one tesla,my name is alex'
print(name.replace('alex','SB',1)) #SB替换掉alex,1代表替换一个
#####is系列 返回值是bool
name='jinxin123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
print(name.isdigit()) #字符串只由数字组成
2.4元组tuple。
元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")
2.5列表list。
列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:
li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]
列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。
2.5.1、增。
 
li=[1,'a','b',2,3,'a']#li.insert(0,55)#按照索引去增加#print(li)##li.append('aaa')#增加到最后#li.append([1,2,3])#增加到最后#print(li)##li.extend(['q,a,w'])#迭代的去增#li.extend(['q,a,w','aaa'])#li.extend('a')#li.extend('abc')#li.extend('a,b,c')#print(li)列表的增
2.5.2、删。
 
# l1 = li.pop(1) #按照位置去删除,有返回值 # print(l1) # del li[1:3] #按照位置去删除,也可切片删除没有返回值。 # print(li) # li.remove('a') #按照元素去删除 # print(li) # li.clear() #清空列表
2.5.3、改。
 
# 改 # li = [1,'a','b',2,3,'a'] # li[1] = 'dfasdfas' # print(li) # li[1:3] = ['a','b'] # print(li) 列表的改
2.5.4、查。
切片去查,或者循环去查。
2.5.5、其他操作
count(数)(方法统计某个元素在列表中出现的次数)。
1 a = ["q","w","q","r","t","y"] 2 print(a.count("q"))
index(方法用于从列表中找出某个值第一个匹配项的索引位置)
1 a = ["q","w","r","t","y"] 2 print(a.index("r"))
sort (方法用于在原位置对列表进行排序)。
reverse (方法将列表中的元素反向存放)。
1 a = [2,1,3,4,5] 2 a.sort()# 列表内数字从小到大排序,他没有返回值,所以只能打印a 3 print(a)
4 a.sort(reverse=True) #从大到小排序 5 a.reverse()#他也没有返回值,所以只能打印a 6 print(a) #列表倒序
2.6字典dict。
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
2.6.1、增。
 
#dic['li']=["a","b","c"]#print(dic)#setdefault在字典中添加键值对,如果只有键那对应的值是none,但是如果原字典中存在设置的键值对,则他不会更改或者覆盖。#dic.setdefault('k','v')#print(dic)#{'age':18,'name':'jin','sex':'male','k':'v'}#dic.setdefault('k','v1')#{'age':18,'name':'jin','sex':'male','k':'v'}#print(dic)字典的增
2.6.2、删。
 
# print(dic.pop('age')) # 有返回值 返回值为age键对应的值 # print(dic.pop('age1','没有此键')) #没有age1键返回值为自定义的'没有此键',若没自定义则报错 # print(dic.popitem()) #随机删除一个键值对,有返回值 为元组内容是被删除的键值对 # dic.clear() #清空字典等效于清空列表 # del dic #删除整个字典 # del dic['name'] #删除键
2.6.3、改。
 
# dic['name']='jin' #有则覆盖 无则添加 # update #两个字典的更新 # dic2={'name':'wusir','job':'AV'} # dic2.update(dic)
2.6.4、查。
 
##查 # print(dic['name']) #返回值为对应的值 若键不存在则报错 # print(dic.get('name1','没有')) #同上 但键不存在则返回None也可自定义 ###三种特殊数据类型 dict_keys, dict_values, dict_items # print(dic.keys(),type(dic.keys())) #dict_keys(['name', 'age', 'hobby']) <class 'dict_keys'> # for key in dic.keys(): # # print(key) # l_key = list(dic.keys()) # print(l_key) # for value in dic.values(): # print(value) # l_value =list(dic.values()) # print(l_value) # print(dic.items()) #分别赋值概念 dict_items([('name', 'alex'), ('age', 34), ('hobby', 'women')])
2.6.5、其他操作。
字典的循环。
1 # dic = {"name":"jin","age":18,"sex":"male"} 2 # for key in dic: 3 # print(key) 4 # for item in dic.items(): 5 # print(item) 6 # for key,value in dic.items(): 7 # print(key,value)
三,其他(for,enumerate,range ; id() , is )。
for循环:用户按照顺序循环可迭代对象的内容。
1 msg = 'python是最好的计算机语言' 2 for item in msg: 3 print(item) 4 5 li = ['alex','银角','女神','egon','太白'] 6 for i in li: 7 print(i) 8 9 dic = {'name':'太白','age':18,'sex':'man'} 10 for k,v in dic.items(): 11 print(k,v)
enumerate:枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。
1 li = ['alex','银角','女神','egon','太白'] 2 for i in enumerate(li): 3 print(i) 4 for index,name in enumerate(li,1): 5 print(index,name) 6 for index, name in enumerate(li, 100): # 起始位置默认是0,可更改 7 print(index, name)
range:指定范围,生成指定数字。
1 for i in range(1,10): 2 print(i) 3 4 for i in range(1,10,2): # 步长 5 print(i) 6 7 for i in range(10,1,-2): # 反向步长 8 print(i)
python3 id()、is 内存地址
1.id() 内存地址
2.==比较的是值
3.is 比较的是内存地址
数字,字符串,有小数据池
int -5--256
str:1,不能有空格
2.长度不能超过20个字符
3.不能有特殊字符如:#@....
1.id() 内存地址
1 # id() 内存地址 2 s = 'alex' 3 print(s,type(s),id(s)) 4 # alex <class 'str'> 35619648 5 # alex <class 'str'> 32146240
2.== 比较的是值
3.is 比较的是内存地址
1 # 列表、字典、元祖、set集合 2 l1 = [1,2,3] 3 l2 = [1,2,3] 4 print(l1 == l2) # True 5 print(id(l1),id(l2)) # 35680008 35679368 6 print(l1 is l2) #False
# 字符串、数字的特殊的。比较内存地址,pc看不出来,用cmd来查看s1 = 'alex  '
 对于str 小数据池
# 范围  
    1.不能有空格。
    2.长度不能超过20位。
    3.不能有特殊字符。#@...
cmd  ---------》str
# 字符串内纯字母
i = 'a'
i1= 'a'
print(i is i1)
True
# 有空格指向的是False
s1 = 'alex '    
s2 = 'alex '
print(s1 == s2)  
True
print(s1 is s2)   
False
i = 'a  b'      
i1= 'a  b'
print(i is i1)
False
# 超过20位则为False
i = 'a'*20    
j = 'a'*20
print(i is j)
True
i = 'a'*21    
j = 'a'*21
print(i is j)
False
# 有特殊字符也为False
i = 'a@'
j = 'a@'
print(i is j)
False
对于int 小数据池
#范围:
-5---256 创建的相同的数字,都指向同一个内存地址。-5/256都包含
# int -5至256
i = 6 i1= 6 print(i is i1) True
i = -5
i1= -5
print(i is i1)
True
# int 超出-5至256 i = 258 i1= 258 print(i is i1) False
 
                    
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号