当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > Python中数据类型

Python中数据类型 时间:2019-03-20      来源:华清远见

一、Python中五种标准数据类型

数字(Number)

字符串(String)

列表(list)

元组(tuple)

字典(Dictionary)

二、数字(Number)

数字不可变数据类型,分为以下四种数值类型:

整型(int)

长整型(long)

浮点型(float)

复数(complex)

数值类型实例如下:

Python中数据类型

三、字符串(String)

字符串不可变的数据类型,是一个序列,序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,第一个索引是0,第二个索引是1,依此类推。在python中’’ 和 “ ”号都表示字符串。

S1 = ‘hello’

S2 = “world”

1.字符串索引

(1)下标从左向右索引: 

name = 'hello'

name[0] ===> ‘h’

name[1] ===> ‘e’ 

name[2] ===> ‘l’

name[3] ===> ‘l’

name[4] ===> ‘o’

#起始下标: 0 

#终止下标: 元素个数n - 1(len(name)-1) len(name)得到字符串序列长度

(2)下标从右向左索引

name = 'hello'

name[-5] ===> ‘o’

name[-4] ===> ‘l’ 

name[-3] ===> ‘l’

name[-2] ===> ‘e’

name[-1] ===> ‘h’

#起始下标: -len(name) 

#终止下标: -1 

2.字符串切片

name[i:j]      ### i起始下标  j终止下标:只能切到终止下标的前一个

name[i:j:stride]     ### i起始下标  j终止下标:只能切到终止下标的前一个

### stride 步长,步长为正数:正切

###   步长,步长为负数: 反切

切片实例 

In [1]: name = 'abcdefghijk'

In [2]: name[1:5]##起始下标  终止下标,注意切到终止下标的前一个

Out[2]: 'bcde'

In [4]: name[0:5]

Out[4]: 'abcde'

In [5]: name[:5] ###如果左面省略不写,默认为0

Out[5]: 'abcde'

In [6]: name[6:] ###如果右面省略不写,默认为len(name)

Out[6]: 'ghijk'

In [7]: name[6:len(name)]

Out[7]: 'ghijk'

In [9]: name[0:5:1]  

Out[9]: 'abcde'

In [10]: name[0:5:2] ### 2 代表步长,间距数为 步长-1

Out[10]: 'ace'

In [11]: name[0:5:3]

Out[11]: 'ad'

In [12]: name[0:5:-1]## 负数代表反切

Out[12]: ''

In [14]: name[5:0:-1]

Out[14]: 'fedcb'

In [15]: name[5::-1]

Out[15]: 'fedcba'

In [16]: name[::-1]

Out[16]: 'kjihgfedcba'

In [17]: name

Out[17]: 'abcdefghijk'

In [18]: a = name[::-1]###相当于将字符串转置

In [19]: a

Out[19]: 'kjihgfedcba' 

In [20]: a = name[::-4] ###可以将结果赋值给另一个变量保存

In [21]: a

Out[21]: 'kgc'​

In [26]: name[0] ###不能修改元素的值,字符串是不可变类型

Out[26]: 'a'

In [27]: name[0] = 'm' ###修改会挂掉

3.字符串加乘

字符串与字符串之间可以进行相加,字符串与整数之间可以相乘

(1)相加实例

In [29]: xing = 'zhang' 

In [30]: ming = ' san'

In [31]: xing + ming 

Out[31]: 'zhang san'

In [32]: xing ###注意此处:xing没变

Out[32]: 'zhang'

In [33]: ming ###注意此处:ming没变

Out[33]: ' san'

In [34]: xingming = xing + ming  ###可以将相加的值赋值给另一个变量保存

In [35]: xingming

Out[35]: 'zhang san'

In [36]: 

In [36]: xing + 3 ###字符串只能与字符串相加

(2)相乘实例

In [39]: 'hello'*10 ##字符串可以与整数相乘

Out[39]: 'hellohellohellohellohellohellohellohellohellohello'

In [40]: 'hello'*5

Out[40]: 'hellohellohellohellohello'

4.字符串操作(增、删、改、查)

4.1 字符串为不可变类型,增删改不探讨

4.2 查

(1)下标索引 

(2)in 和 not in

  ##in 在里面, not in 不在里面 

In [42]: name 

Out[42]: 'abcdefghijk'

In [43]: if 'a' in name: ##在里面为True,不在为False

....:     print 'a is in'

....:     

a is in

In [44]: if 'Z' not in name: ##'Z'代表的是字符串,不是字符

....:     print 'Z is not in'  

Z is not in

四、列表(List)

列表可变数据类型,是一个序列。列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现,列表的数据项不需要具有相同的类型。

nums = [0, ”zhangsan”, 4.5 , 5] ###定义一个列表

nums  ###列表名 

=     ###赋值

[]     ###代表列表 

0,”zhangsan”,4.5,5   ###代表列表中的元素,用,号隔开 

1.列表下标索引

列表索引 同上 字符串索引

索引实例:

In [27]: names = ['zhangsan',13,98.7,[180,100]] ###列表里面可以嵌套列表

In [29]: names[3]

Out[29]: [180, 100]

2.列表切片

列表切片 同上 字符串切片

切片实例:

In [38]: nums

Out[38]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

In [39]: nums[2:5] ###注意返回值为列表,如果想保存起来需要赋值到变量里

Out[39]: [3, 4, 5]

In [40]: nums ###nums切完并没有改变

Out[40]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

In [41]: newnums = nums[2:5]

In [42]: newnums

Out[42]: [3, 4, 5]

In [43]: nums

Out[43]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

In [44]: nums[::-1] ###相当于转置列表

Out[44]: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

3.列表加乘

列表加乘 同上 字符串加乘

加乘实例:

In [45]: names = ['zhangsan','lisi','wangwu']

In [46]: nums

Out[46]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

In [47]: names + nums 

Out[47]: ['zhangsan', 'lisi', 'wangwu', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

In [48]: nums ###注意此处相加后 nums没变

Out[48]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

In [49]: names ###注意此处相加后 names没变   

Out[49]: ['zhangsan', 'lisi', 'wangwu']

In [50]: names*2  ###与整数相乘

Out[50]: ['zhangsan', 'lisi', 'wangwu', 'zhangsan', 'lisi', 'wangwu']

1.列表的操作(增、删、改、查)

4.1增

(1)List.append(obj) 

##功能:将对象追加列表尾  

In [54]: names

Out[54]: ['zhangsan', 'lisi', 'wangwu']

In [55]: names.append('xiaotaoqi')

In [56]: names ###注意此处names发生变化

Out[56]: ['zhangsan', 'lisi', 'wangwu', 'xiaotaoqi']

(2)List.insert(post,obj)

##功能: post代表插入的位置,obj插入的对象,指定下标位置插入 In [56]: names

Out[56]: ['zhangsan', 'lisi', 'wangwu', 'xiaotaoqi']

In [57]: names.insert(0,'budaode') ##0代表下标

In [58]: names

Out[58]: ['budaode', 'zhangsan', 'lisi', 'wangwu', 'xiaotaoqi']

In [59]: names.insert(3,'yibandaode')###3代表下标,其他元素向后移动

In [60]: names

Out[60]: ['budaode', 'zhangsan', 'lisi', 'yibandaode', 'wangwu', 'xiaotaoqi']

(3)Lsit.extend(seq) 

##功能:将整个序列插入的列表尾

In [63]: names.extend('wangwu') ###将序列中的每个元素,插入的列表尾

In [64]: names

Out[64]: ['zhangsan', 'lisi', 'w', 'a', 'n', 'g', 'w', 'u']

In [65]: nums = [1,2,3]

In [66]: names.extend(nums)##将序列中的每个元素,插入的列表尾

In [67]: names

Out[67]: ['zhangsan', 'lisi', 'w', 'a', 'n', 'g', 'w', 'u', 1, 2, 3]

4.2 删

(1)List.pop()

##功能:默认无参数删除列表中最后一个元素,如果有参数,代表删 除的位置下标

##返回值:返回值为pop掉元素的值

In [91]: names = ['zhangsan','lisi','wangwu']

In [92]: names.pop()

Out[92]: 'wangwu'

In [93]: names.pop()

Out[93]: 'lisi'

In [94]: names.pop()

Out[94]: 'zhangsan'

In [96]: names = ['zhangsan','lisi','wangwu']

In [97]: names.pop(1) ###如果有参数,1代表下标,删除的names[1]

Out[97]: 'lisi'

In [98]: names

Out[98]: ['zhangsan', 'wangwu']

In [99]: names.pop(0) ###删除的是names[0]

Out[99]: 'zhangsan'

(2)List.remove(obj)

##功能:根据列表中的元素的值进行删除元素,如果值不存在会报错出现 异常

In [115]: names = ['zhangsan','lisi','zhangsan','wangwu','lisi']

In [116]: names.remove('zhangsan') ###当出现重名时,删除的是从左到右 第一次出现的值

In [117]: names

Out[117]: ['lisi', 'zhangsan', 'wangwu', 'lisi']

In [118]: names.remove('lisi')

In [119]: names

Out[119]: ['zhangsan', 'wangwu', 'lisi']

(3)del 元素

##功能:删除指定元素  

del 元素### 类似于pop( ),根据下标删除

In [125]: names = ['zhangsan','lisi','zhangsan','wangwu','lisi']

In [126]: del names[2] ##直接删除指定元素

In [127]: names

Out[127]: ['zhangsan', 'lisi', 'wangwu', 'lisi']

In [128]: del names[0]

In [129]: names

Out[129]: ['lisi', 'wangwu', 'lisi']

2.4.3改

通过下标进行修改

In [130]: names

Out[130]: ['lisi', 'wangwu', 'lisi']

In [131]: names[0] = 100 ##可以直接通过下标对元素进行赋值修改

In [132]: names

Out[132]: [100, 'wangwu', 'lisi']

In [133]: names[1] = [1,2,3] ###直接通过下标对元素进行赋值修改

In [135]: names

Out[135]: [100, [1, 2, 3], 'lisi']

3.4.4查

(1)下标索引  name[0]

(2)in 和 not in

##用法和字符串相同

(3)List.index(value)

###功能: 查找对应value值出现的位置下标,如果出现多个值重复, 返回是从左到右第一次出现的位置小标

###返回值: 出现的下标

In [27]: nums

Out[27]: [1, 2, 2, 3, 4, 5, 2]

In [28]: nums.index(2)

Out[28]: 1

In [29]: nums.index(5)

Out[29]: 5

五、元组(Tuple)

元组不可变数据类型,是一个序列。Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号(),列表使用方括号[]。元组内元素可以是相同数据类型也可以是不同数据类型。

nums = (1,2,3)  ###定义一个元组

nums  ###元组名  

=     ###赋值 

()     ###代表元组

1,2,3  ###代表元组中的元素,用,号分隔

In [1]: nums = (1,2,3) ###元组保存相同的数据类型

In [3]: names = ('zhangsan','lisi')###元组保存相同的数据类型

In [7]: name = ('zhangsan',18,98.8)###元组保存不同的数据类型

4.元组的下标索引、切片、加乘

元组的索引和切片 同上 列表索引和切片

5.元组操作(增、删、改、查)

(1)元组是不可变数据类型,对增、删、改不做探讨

(2)查 同上 字符串 

六、字典(Dictionary)

字典可变数据类型,是无序对象的集合。字典是另一种可变容器模型,且可存储任意类型对象,如其他容器模型。字典由键和对应值成对组成。字典也被称作关联数组或哈希表。

d1 = {'gong':1000,'xi':5,'fa':100,'cai':500 }

#d1  ###字典名

#=   ###赋值

#{}  ###代表字典

# 'gong':1000,'xi':5,'fa':100,'cai':500   ###字典中的元素,用,号分隔

#'gong':1000   ###键值对 

#'gong'        ###key键

# :         ###键和值之间的分隔 

#1000        ###值 value  

#d1['gong']

In [70]: d1 = {1:1000}

In [71]: d1 = {1.1:1000}

In [72]: d1 = {(1,1):1000}

In [73]: d1 = {[1,2]:1000} #### 错误:列表是可变类型,可变类型不能当做key  

6.字典索引

In [63]: d1 = {'gong':1000,'xi':5,'fa':100,'cai':500 }

In [65]: d1['gong'] ###只能通过key索引,不能通过下标索引

Out[65]: 1000

7.字典切片和加乘

字典不可以进行索引和切片

8.字典操作(增、删、改、查)

3.1 增

(1)key不存在,直接进行相加 

In [96]: d1

Out[96]: {'zhangsan': 89}

In [97]: d1['lisi'] = 90

In [98]: d1

Out[98]: {'lisi': 90, 'zhangsan': 89}

In [100]: d1[1] = 'wangwu' ###1代表的是key 1, 'wangwu'作为值添加

In [101]: d1

Out[101]: {1: 'wangwu', 'lisi': 90, 'zhangsan': 89}

(2)d1.update(d2) 

###功能:将d2字典中的所有元素,添加到d1中,

###如果d2和d1存在相同的key,更新后重复的key,值为d2中的值

In [105]: d1

Out[105]: {1: 'wangwu', 'lisi': 90, 'zhangsan': 89}

In [106]: d2

Out[106]: {1: 'haha', 'lisi': 100, 'wangwu': 1000}

In [107]: d3 = {'zhaoliu':98}

In [108]: d1.update(d3)

In [109]: d1

Out[109]: {1: 'wangwu', 'lisi': 90, 'zhangsan': 89, 'zhaoliu': 98}

In [110]: d1

Out[110]: {1: 'wangwu', 'lisi': 90, 'zhangsan': 89, 'zhaoliu': 98}

In [111]: d2

Out[111]: {1: 'haha', 'lisi': 100, 'wangwu': 1000}

In [112]: d1.update(d2) ###发现d1中的key 1 和 key 'lisi'为d2中的值

In [113]: d1

Out[113]: {1: 'haha', 'lisi': 100, 'wangwu': 1000, 'zhangsan': 89, 'zhaoliu': 98}

3.2 删

(1)del d1["score"] 

##通过key直接删除字典中的元素

In [114]: d1 = {'name':'zhangsan','age':18,'score':98.6}

In [115]: d1

Out[115]: {'age': 18, 'name': 'zhangsan', 'score': 98.6}

In [116]: del d1['age']

In [117]: d1

Out[117]: {'name': 'zhangsan', 'score': 98.6}

In [118]: 

(2)dict.pop(key,default)

##功能:删除字典中对应key的值

##返回值:返回值key对应的值

In [120]: d1

Out[120]: {'age': 18, 'name': 'zhangsan', 'score': 98.6}

In [121]: d1.pop('name') ###当一个参数key存在的时候,删除的key对应的键值对

Out[121]: 'zhangsan'

In [122]: d1.pop('weight') ###当一个参数key不存在的时候,会挂掉,因为key不存在

---------------------------------------------------------------------------

KeyError                                  Traceback (most recent call last)

<ipython-input-122-b92dacda62dd> in <module>()

----> 1 d1.pop('weight')

KeyError: 'weight'

In [123]: d1.pop('weight','weight is not in') ###如果key不存在的时候,避免挂掉,可以多加一个参数,defalut 当key不存在的时候,可以返回default对应的值,防止挂掉

Out[123]: 'weight is not in'

(3)dict.popitem()

##功能: 从字典中随机删除一个键值对 

##返回值: 有key和value组成的元组

In [125]: d1 = {'name':'zhangsan','age':18,'score':98.6}

In [126]: d1.popitem()

Out[126]: ('age', 18)

In [127]: d1.popitem()

Out[127]: ('score', 98.6)

In [128]: d1.popitem()

Out[128]: ('name', 'zhangsan')

In [129]: d1.popitem() ##当字典为空的时候,会挂掉

In [48]: 

---------------------------------------------------------------------------

KeyError                                  Traceback (most recent call last)

<ipython-input-129-82c59cddf420> in <module>()

----> 1 d1.popitem()

KeyError: 'popitem(): dictionary is empty'

(4)dict.clear() 

##功能:清空字典中的元素

In [134]: d1

Out[134]: {'name': 'zhangsan', 'score': 98.6}

In [135]: d1.clear()

In [136]: d1

Out[136]: {}

(5)del d1 

##功能:删除字典对象 

In [141]: d1 = {'name':'zhangsan','age':18,'score':98.6}

In [142]: d1

Out[142]: {'age': 18, 'name': 'zhangsan', 'score': 98.6}

In [143]: del d1

In [144]: d1

---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)<ipython-input-144-fcd78e20c918> in <module>()----> 1 d1

NameError: name 'd1' is not defined

3.3 改

(1)通过对应的key值直接进行修改

In [146]: d1 = {'name':'zhangsan','age':18,'score':98.6}

In [147]: d1

Out[147]: {'age': 18, 'name': 'zhangsan', 'score': 98.6}

In [148]: d1['age'] = 1000 ###注意此处,'age'key是存在的,如果不存在相当于添加key和value

In [149]: d1

Out[149]: {'age': 1000, 'name': 'zhangsan', 'score': 98.6}

In [150]: 

3.4 查

(1) 通过key索引

In [150]: d1

Out[150]: {'age': 1000, 'name': 'zhangsan', 'score': 98.6}

In [151]: d1['age']

Out[151]: 1000

In [152]: d1['weight'] ###如果key不存在,会挂掉

(2)dict.get(key, default=None)  

key -- 字典中要查找的键。

default -- 如果指定键的值不存在时,返回该默认值。

返回指定键的值,如果值不在字典中返回默认值None。

In [153]: d1

Out[153]: {'age': 1000, 'name': 'zhangsan', 'score': 98.6}

In [154]: d1.get('age') ###key存在,返回key对应的值

Out[154]: 1000

In [155]: d1.get('weight') ###'weight'key不存在,返回值为defalut的值None 空,可以避免key不存在时,程序挂掉

In [156]: d1.get('weight','I miss you !!')####如果给defalut指定值,也就是 多了第二个参数,当key不存在的时候返回第二个参数的值

Out[156]: 'I miss you !!'

In [157]: d1.get('weight')

In [158]: d1.get('age','I miss you !!') ##只要key存在,第二个参数没有作用,返回值依然为key的值

Out[158]: 1000

In [159]: 

(3)dict.setdefault(key, default=None)

key -- 查找的键值。

default -- 键不存在时,设置的默认键值。

如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值。

In [159]: d1

Out[159]: {'age': 1000, 'name': 'zhangsan', 'score': 98.6}

In [160]: d1.setdefault('age') ###如果key存在,返回key对应的值

Out[160]: 1000

In [161]: d1.setdefault('weight') ###如果key不存在,相当于字典中添加一个key 'weight'对应的值为默认None

In [162]: d1

Out[162]: {'age': 1000, 'name': 'zhangsan', 'score': 98.6, 'weight': None}

In [163]: d1.setdefault('height',180) ###如果key不存在,相当于字典中添加一个key 'height',对应的值为180

Out[163]: 180

In [164]: d1

Out[164]: {'age': 1000, 'height': 180, 'name': 'zhangsan', 'score': 98.6, 'weight': None}

(4)in 和 not in

##注意字典在使用in 和 not in的时候,判断是key是否存在字典中

In [165]: d1

Out[165]: {'age': 1000, 'height': 180, 'name': 'zhangsan', 'score': 98.6, 'weight': None}

In [166]: if 1000 in d1: ####只能判断key是否在里面,1000是值,当做key搜索时没有。

上一篇:C语言:算术表达式

下一篇:C++整数溢出

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2018 北京华清远见科技发展有限公司 版权所有 ,京ICP备16055225号,京公海网安备11010802025203号