基础数据类型用法

一、概述:

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


 







posted @ 2018-05-06 22:55  目码人  阅读(123)  评论(0)    收藏  举报