Python【第二章】:Python的数据类型
基本数据类型
一、整型
如: 18、73、84
二、长整型
如:2147483649、9223372036854775807
三、浮点型
如:3.14、2.88
四、字符串
如:'wupeiqi'、'alex'、'lzl'
1、字符串常用功能:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #str功能操作 name = "my name is lzl" print (name.capitalize()) #首字母大写 #My name is lzl print (name.count( "l" )) #统计字符串出现某个字符的个数 #2 print (name.center( 30 , "-" )) #打印30个字符,不够的-补齐 #--------my name is lzl-------- print (name.ljust( 30 , "-" )) #打印30个字符,不够的-补齐,字符串在左边 #my name is lzl---------------- print (name.endswith( "lzl" )) #判断字符串是否以lzl结尾 #True print (name[name.find( "na" ):]) #find寻找na所在的索引下标 字符串也可以切片 #name is lzl print ( "5.3" .isdigit()) #判断字符是否为整数 #False print ( "a_1A" .isidentifier()) #判断是不是一个合法的标识符(变量名) #True print ( "+" .join([ "1" , "2" , "3" ])) #把join后的内容加入到前面字符串中,以+为分割符 #1+2+3 print ( "\nlzl" .strip()) #去换行符 #lzl print ( "1+2+3+4" .split( "+" )) #以+为分隔符生成新的列表,默认不写为空格 #['1', '2', '3', '4'] name = "my name is {name} and i an {year} old" print (name. format (name = "lzl" ,year = 20 ) #my name is lzl and i an 20 old print (name.format_map({ "name" : "lzl" , "year" : 20 })) #很少用 #my name is lzl and i an 20 old p = str .maketrans( "abcdefli" , "12345678" ) #转换 一一对应 print ( "lianzhilei" .translate(p)) #781nzh8758 |
五、列表
如:[11,22,33,44,55]、['wupeiqi', 'alex','lzl']
1、创建列表:
1
2
3
4
5
6
7
|
#两种创建方式 name_list = [ 'alex' , 'seven' , 'eric' ] print (name_list) # ['alex', 'seven', 'eric'] name_list = list ([ 'alex' , 'seven' , 'eric' ]) print (name_list) # ['alex', 'seven', 'eric'] |
2、列表类常用功能:
① 切片
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
name_list = [ "Alex" , "Tenglan" , "Eric" , "Rain" , "Tom" , "Amy" ] print (name_list[ 0 : 3 ]) #取下标0至下标3之间的元素,包括0,不包括3 #['Alex', 'Tenglan', 'Eric'] print (name_list[: 3 ]) #:前什么都不写,表示从0开始,效果跟上句一样 #['Alex', 'Tenglan', 'Eric'] print (name_list[ 3 :]) #:后什么不写,表示取值到最后 #['Rain', 'Tom', 'Amy'] print (name_list[:]) #:前后都不写,表示取值所有 #['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy'] print (name_list[ - 3 : - 1 ]) #从-3开始到-1,包括-3,不包括-1 #['Rain', 'Tom'] print (name_list[ 1 : - 1 ]) #从1开始到-1,下标有正有负时,正数在前负数在后 #['Tenglan', 'Eric', 'Rain', 'Tom'] print (name_list[:: 2 ]) #2表示,每个1个元素,就取一个 #['Alex', 'Eric', 'Tom'] #注:[-1:0] [0:0] [-1:2] 都是空 |
② 追加
1
2
3
4
|
name_list = [ "Alex" , "Tenglan" , "Eric" , "Rain" , "Tom" , "Amy" ] name_list.append( "new" ) #append追加,加到最后,只能添加一个 print (name_list) #['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', 'new'] |
③ 插入
1
2
3
4
|
#插入 name_list = [ "Alex" , "Tenglan" , "Eric" , "Rain" , "Tom" , "Amy" ] name_list.insert( 3 , "new" ) #insert插入,把"new"加到下标3的位置 print (name_list) |
④ 修改
1
2
3
4
|
#修改 name_list = [ "Alex" , "Tenglan" , "Eric" , "Rain" , "Tom" , "Amy" ] name_list[ 2 ] = "lzl" #把下标2的字符串换成lzl print (name_list) |
⑤ 删除
1
2
3
4
5
6
7
8
9
10
11
|
#3种删除方式 name_list = [ "Alex" , "Tenglan" , "Eric" , "Rain" , "Tom" , "Amy" ] del name_list[ 3 ] #del删除,指定要删除的下标 print (name_list) #['Alex', 'Tenglan', 'Eric', 'Tom', 'Amy'] name_list.remove( "Tenglan" ) #remove删除,指定要删除的字符 print (name_list) #['Alex', 'Eric', 'Tom', 'Amy'] name_list.pop() #pop删除,删除列表最后一个值 print (name_list) #['Alex', 'Eric', 'Tom'] |
⑥ 扩展
1
2
3
4
|
name_list = [ "Alex" , "Tenglan" , "Eric" , "Rain" , "Tom" , "Amy" ] age_list = [ 11 , 22 , 33 ] name_list.extend(age_list) #extend扩展,把列表age_list添加到name_list列表 print (name_list) |
⑦ 拷贝
1
2
3
4
|
name_list = [ "Alex" , "Tenglan" , "Eric" , "Rain" , "Tom" , "Amy" ] copy_list = name_list.copy() #copy拷贝,对列表进行复制 print (copy_list) #注:博客最下有关于深浅copy的详细区分 |
⑧ 统计
1
2
3
|
name_list = [ "Alex" , "Tenglan" , "Eric" , "Amy" , "Tom" , "Amy" ] print (name_list.count( "Amy" )) #count统计,统计列表Amy的个数 #2 |
⑨ 排序和翻转
1
2
3
4
5
6
7
|
name_list = [ "Alex" , "Tenglan" , "Eric" , "Rain" , "Tom" , "Amy" , "1" , "2" , "3" ] name_list.sort() #sort排序,对列表进行排序 print (name_list) #['1', '2', '3', 'Alex', 'Amy', 'Eric', 'Rain', 'Tenglan', 'Tom'] name_list.reverse() #reverse翻转,对列表进行翻转 print (name_list) #['Tom', 'Tenglan', 'Rain', 'Eric', 'Amy', 'Alex', '3', '2', '1'] |
⑩ 获取下标
1
2
3
|
name_list = [ "Alex" , "Tenglan" , "Eric" , "Rain" , "Tom" , "Amy" ] print (name_list.index( "Tenglan" )) #index索引,获取字符的下标 #1 |
六、元组
如:(11,22,33,44,55)、('wupeiqi', 'alex','lzl')
1、创建元组:
1
2
3
4
5
6
7
8
9
10
11
|
#5种创建方式 age = 11 , 22 , 33 , 44 , 55 #直接写数字或者字符串,默认创建类型元组 字符串类型用引号'lzl' #输出: (11, 22, 33, 44, 55) age = ( 11 , 22 , 33 , 44 , 55 ) #常见命名方式,()指定类型元组 #输出: (11, 22, 33, 44, 55) age = tuple (( 11 , 22 , 33 , 44 , 55 )) #tuple 以类的方式创建(()) 双括号 里面的()不可去掉 #输出: (11, 22, 33, 44, 55) age = tuple ([ 11 , 22 , 33 , 44 , 55 ]) #同(()) 效果一样 很少用 忘记它 #输出: (11, 22, 33, 44, 55) age = tuple ({ 11 , 22 , 33 , 44 , 55 }) #({})创建的元组,随机排列 没卵用 #输出: (33, 11, 44, 22, 55) |
2、元组类常用功能:
1
2
3
4
5
6
7
8
|
##count #统计元组字符出现的次数 name = ( 'wupeiqi' , 'alex' , 'lzl' ) print (name.count( 'alex' )) # 1 ##index #查看字符串所在的索引位置 name = ( 'wupeiqi' , 'alex' , 'lzl' ) print (name.index( 'lzl' )) # 2 |
七、字典 无序
如:{'name': 'wupeiqi', 'age': 18} 、{'host': '2.2.2.2', 'port': 80}
注:字典一种key:value 的数据类型,也称键值对。字典dict是无序的,key值必须是唯一的,不能有重复。循环时,默认循环的是key
1
2
3
4
5
6
7
|
#两种创建方式: info_dic = { 'stu1101' : "TengLan Wu" , 'stu1102' : "LongZe Luola" , 'stu1103' : "XiaoZe Maliya" ,} print (info_dic) #{'stu1102': 'LongZe Luola', 'stu1101': 'TengLan Wu', 'stu1103': 'XiaoZe Maliya'} info_dic = dict ({ 'stu1101' : "TengLan Wu" , 'stu1102' : "LongZe Luola" , 'stu1103' : "XiaoZe Maliya" ,}) print (info_dic) #{'stu1102': 'LongZe Luola', 'stu1101': 'TengLan Wu', 'stu1103': 'XiaoZe Maliya'} |
2、字典类常用功能:
① 增加
1
2
3
|
info_dic = { 'stu1101' : "TengLan Wu" , 'stu1102' : "LongZe Luola" , 'stu1103' : "XiaoZe Maliya" ,} info_dic[ 'stu1104' ] = "JingKong Cang" #增加 print (info_dic) |
② 修改
1
2
3
|
info_dic = { 'stu1101' : "TengLan Wu" , 'stu1102' : "LongZe Luola" , 'stu1103' : "XiaoZe Maliya" ,} info_dic[ "stu1101" ] = "Jingkong Cang" #有相应的key时为修改,没有为增加 print (info_dic) |
③ 删除
1
2
3
4
5
6
7
8
9
10
11
12
|
#3种删除方式 info_dic = { 'stu1101' : "TengLan Wu" , 'stu1102' : "LongZe Luola" , 'stu1103' : "XiaoZe Maliya" ,} info_dic.pop( 'stu1101' ) #pop删除,指定删除的key print (info_dic) #{'stu1103': 'XiaoZe Maliya', 'stu1102': 'LongZe Luola'} del info_dic[ 'stu1102' ] #del删除,指定删除的key print (info_dic) #{'stu1103': 'XiaoZe Maliya'} info_dic = { 'stu1101' : "TengLan Wu" , 'stu1102' : "LongZe Luola" , 'stu1103' : "XiaoZe Maliya" ,} info_dic.popitem() #随机删除,没卵用 print (info_dic) #{'stu1101': 'TengLan Wu', 'stu1103': 'XiaoZe Maliya'} |
④ 查找value值
1
2
3
4
5
|
info_dic = { 'stu1101' : "TengLan Wu" , 'stu1102' : "LongZe Luola" , 'stu1103' : "XiaoZe Maliya" ,} print (info_dic.get( 'stu1102' )) #get查找,通过key查找value值 #LongZe Luola print (info_dic[ 'stu1102' ]) #通过key直接查找,但是如果输入查找的key不存在的话,就会报错,get则不会 #LongZe Luola |
⑤ 字典多级嵌套
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
av_catalog = { "欧美" :{ "www.youporn.com" : [ "很多免费的,世界最大的" , "质量一般" ], "www.pornhub.com" : [ "很多免费的,也很大" , "质量比yourporn高点" ], "letmedothistoyou.com" : [ "多是自拍,高质量图片很多" , "资源不多,更新慢" ], "x-art.com" :[ "质量很高,真的很高" , "全部收费,屌比请绕过" ] }, "日韩" :{ "tokyo-hot" :[ "质量怎样不清楚,个人已经不喜欢日韩范了" , "听说是收费的" ] }, "大陆" :{ "1024" :[ "全部免费,真好,好人一生平安" , "服务器在国外,慢" ] } } av_catalog[ "大陆" ][ "1024" ][ 1 ] + = ",可以用爬虫爬下来" print (av_catalog[ "大陆" ][ "1024" ]) #['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来'] |
⑥ 循环
1
2
3
4
5
6
7
8
9
10
11
|
info_dic = { 'stu1101' : "TengLan Wu" , 'stu1102' : "LongZe Luola" , 'stu1103' : "XiaoZe Maliya" ,} for stu_nu in info_dic: print (stu_nu,info_dic[stu_nu]) #循环默认提取的是key #stu1103 XiaoZe Maliya #stu1101 TengLan Wu #stu1102 LongZe Luola for k,v in info_dic.items(): #先把dict生成list,数据量大的时候费时,不建议使用 print (k,v) #stu1103 XiaoZe Maliya #stu1101 TengLan Wu #stu1102 LongZe Luola |
八、集合
如:{'lzl', 33, 'alex', 22, 'eric', 'wupeiqi', 11}
注:集合是一个无序的,不重复的数据组合。去重性,把一个列表变成集合,就自动去重了。关系测试,测试两组数据之前的交集、差集、并集
1、创建集合
1
2
3
4
|
#标准创建方式 info_set = set ([ "alex" , "wupeiqi" , "eric" , "lzl" , 11 , 22 , 33 ]) print (info_set, type (info_set)) #{33, 11, 'wupeiqi', 'lzl', 'alex', 'eric', 22} <class 'set'> |
2、集合类常用功能
① 添加
1
2
3
4
5
6
7
8
9
10
|
#添加的两种方式 set_1 = set ([ "alex" , "wupeiqi" , "eric" , "lzl" ]) set_1.add( 11 ) #add只能添加一个元素 print (set_1) #{'alex', 'lzl', 'eric', 11, 'wupeiqi'} set_1 = set ([ "alex" , "wupeiqi" , "eric" , "lzl" ]) set_1.update([ 11 , 22 , 33 ]) print (set_1) #update可以添加多个元素 #{33, 11, 'alex', 'wupeiqi', 'eric', 22, 'lzl'} |
② 删除
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#删除的三种方式 set_1 = set ([ "alex" , "wupeiqi" , "eric" , "lzl" , 11 , 22 , 33 ]) set_1.remove( "alex" ) #remove 删除指定元素 print (set_1) #{'eric', 33, 'lzl', 11, 22, 'wupeiqi'} set_1.pop() #pop 随机删除元素 print (set_1) #{33, 'wupeiqi', 11, 22, 'lzl'} set_1.discard( "lzl" ) #discard 删除指定元素,与remove区别在于,如果元素不存在也不会报错 set_1.discard( 55 ) print (set_1) #{33, 'wupeiqi', 11, 22} |
3、集合关系测试
① 交集
1
2
3
4
5
6
|
#交集 set_1 = set ([ "alex" , "wupeiqi" , "eric" , "lzl" , 11 , 22 , 33 ]) set_2 = set ([ 11 , 22 , 33 , 44 , 55 , 66 ]) print (set_1.intersection(set_2)) #intersection 取两个set的交集 set_1和set_2可以互换位置 #{33, 11, 22} |
② 并集
1
2
3
4
5
6
|
#并集 set_1 = set ([ "alex" , "wupeiqi" , "eric" , "lzl" , 11 , 22 , 33 ]) set_2 = set ([ 11 , 22 , 33 , 44 , 55 , 66 ]) print (set_1.union(set_2)) #union 取两个set集合的并集 set_1和set_2可以互换位置 #{33, 66, 11, 44, 'eric', 55, 'lzl', 22, 'wupeiqi', 'alex'} |
③ 差集
1
2
3
4
5
6
|
#差集 set_1 = set ([ "alex" , "wupeiqi" , "eric" , "lzl" , 11 , 22 , 33 ]) set_2 = set ([ 11 , 22 , 33 , 44 , 55 , 66 ]) print (set_1.difference(set_2)) #difference 取两个set集合的差集 set_1有但是set_2没有的集合 #{'lzl', 'eric', 'wupeiqi', 'alex'} |
④ 子集、父集
1
2
3
4
5
6
7
8
|
#子集 set_1 = set ([ "alex" , "wupeiqi" , "eric" , "lzl" , 11 , 22 , 33 ]) set_2 = set ([ 11 , 22 , 33 , 44 , 55 , 66 ]) set_3 = set ([ 11 , 22 , 33 ]) print (set_1.issubset(set_2)) #issubset 子集 #False print (set_1.issuperset(set_3)) #issuperset 父集 #True |
⑤ 对称差集
1
2
3
4
5
6
|
#对称差集 set_1 = set ([ "alex" , "wupeiqi" , "eric" , "lzl" , 11 , 22 , 33 ]) set_2 = set ([ 11 , 22 , 33 , 44 , 55 , 66 ]) print (set_1.symmetric_difference(set_2)) #symmetric_difference 对称差集=两个集合并集减去合集 #{66, 'lzl', 'eric', 'alex', 55, 'wupeiqi', 44} |
⑥ 运算符做关系测试
1
2
3
4
5
6
7
8
9
10
11
|
#运算符做关系测试 set_1 = set ([ "alex" , "wupeiqi" , "eric" , "lzl" , 11 , 22 , 33 ]) set_2 = set ([ 11 , 22 , 33 , 44 , 55 , 66 ]) set_union = set_1 | set_2 # 并集 set_intersection = set_1 & set_2 # 交集 set_difference = set_1 - set_2 # 差集 set_symmetric_difference = set_1 ^ set_2 # 对称差集 |
Python【第二章】:Python的数据类型的更多相关文章
- Python第二章-变量和数据类型
变量和数据类型 一.什么是变量,常量 思考:程序执行指的是什么? 对数据进行存储处理和计算,最终获得结果,这是程序执行的本质. 变量的概念和在数学中的变量的概念一样的,只是在计算机程序中,变量不仅可以 ...
- 简学Python第二章__巧学数据结构文件操作
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- 第二章Python入门
第二章 Python入门 2.1.简介 Python是著名的"龟叔"(Guido van Rossum)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言 Pytho ...
- [Python笔记][第二章Python序列-复杂的数据结构]
2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...
- [Python笔记][第二章Python序列-tuple,dict,set]
2016/1/27学习内容 第二章 Python序列-tuple tuple创建的tips a_tuple=('a',),要这样创建,而不是a_tuple=('a'),后者是一个创建了一个字符 tup ...
- [python笔记][第二章Python序列-list]
2016/1/27学习内容 第二章 Python序列-list list常用操作 list.append(x) list.extend(L) list.insert(index,x) list.rem ...
- 第二章 深入 C# 数据类型
第二章 深入 C# 数据类型 1.封装又称信息隐藏,是指利用抽象数据类型将数据和数据的操作结合在一起,使其构成一个不可分割的独立实体,尽可能的隐藏内部的细节,只保留一些对外接口,使之于外部发生联系. ...
- Java 第二章 变量、数据类型和运算符
第二章 变量.数据类型和运算符 什么是变量: 变量代表一块内存区域,变量类型不一样,这一块内存的大小也不一样. #在编程语言里面,你可以通过定义变量,向内存里添加数据或者修改内存已有的数据. ...
- 孤荷凌寒自学python第二十八天python的datetime.date模块
孤荷凌寒自学python第二十八天python的datetime.date模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.toordinal() 此方法将访问从公元1年1月1日至当 ...
- 孤荷凌寒自学python第二十二天python类的继承
孤荷凌寒自学python第二十二天python类的继承 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) python中定义的类可以继承自其它类,所谓继承的概念,我的理解 是,就是一个类B继承自 ...
随机推荐
- select、poll、epoll区别总结
1 本质上都是同步I/O 三者都是I/O复用,本质上都属于同步I/O.因为三者只是负责通知应用程序什么时候数据准备好了,实际的I/O操作还是在由应用程序处理:如果是异步I/O的话,实际I/O由内核处理 ...
- SQL SERVER Transactional Replication中添加新表如何不初始化整个快照
在SQL SERVER的复制(Replication)中,有可能出现由于业务需求变更,需要新增一张表或一些表到已有的复制(发布订阅)当中,这种需求应该是很正常,也很常见的.但是在已有的复制(发布订阅) ...
- CGLib动态代理原理及实现
JDK实现动态代理需要实现类通过接口定义业务方法,对于没有接口的类,如何实现动态代理呢,这就需要CGLib了.CGLib采用了非常底层的字节码技术,其原理是通过字节码技术为一个类创建子类,并在子类中采 ...
- 穿越之旅之--android中如何执行java命令
android的程序基于java开发,当我们接上调试器,执行adb shell,就可以执行linux命令,但是却并不能执行java命令. 那么在android的shell中是否就不能执行java程序了 ...
- Linux From Scratch(从零开始构建Linux系统,简称LFS)- Version 7.7(三)
八. 构建LFS系统 1. 准备虚拟内核文件系统 内核会挂载几个文件系统用于自己和用户空间程序交换信息.这些文件系统是虚拟的,并不占用实际磁盘空间, 它们的内容会放在内存里. mkdir -pv $L ...
- 算法: 斐波那契数列C/C++实现
斐波那契数列: 1,1,2,3,5,8,13,21,34,.... //求斐波那契数列第n项的值 //1,1,2,3,5,8,13,21,34... //1.递归: //缺点:当n过大时,递归 ...
- XML 序列化与反序列化
XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...
- android break 与 return 的区别
break 的含义是中断,return 的含义是结束整个方法的执行. 区别. public static void main(String agrs[]){ int i; for(i=0;i<1 ...
- day1学习
python 2 和 3 的区别 1.用户输入的命令:python 2 中是raw_input(""):python 3 中是input(""). 2.默认字符 ...
- eclipse下maven项目保持原有目录结构配置resin运行环境
maven项目用起来很方便,但是它的目录结构和eclipse的目录结构是有区别的,故而在eclipse下的maven项目,直接运行调试是有一些问题的. 为了方便maven项目的运行调试,因而也就有了像 ...