第2章 基本数据类型

2.1 数字(Number)

1.Python3支持int、float、bool、complex
2.type()函数可用来查询变量所指对象类型

a=20
type(a)
# <class ‘int’>
isinstance(a,int)
# True

3.isinstance也可用来查询变量所指对象类型,instance与type区别:type()不会认为子类是一种父类类型,isinstance会认为,如:

class A:pass
class B(A):pass
isinstance(A(),A)
# True
type(A())==A
# True
isinstance(B(),A)
# True
type(B())==A
# False

4.数字格式化
(1)%
(2)format()函数
  1)^, <, > 分别是居中、左对齐、右对齐,后面带宽度
   2): 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
  3)+ 表示在正数前显示 +,负数前显示 -;(空格)表示在正数前加空格
  4)b、d、o、x 分别是二进制、十进制、八进制、十六进制。

5.数学常量与函数



2.2 字符串

1.特点
使用单引号’或双引号”指定,使用三引号(‘’’或”””)可指定一个多行字符串,且字符串中可包含换行符、制表符及其他特殊字符
注意:字符串不能改变,向一个索引位置赋值是错的,如word[0]=’m’

2.字符串切片(正序:0…n-1;倒序:-1…-n)

(1)切片语法:变量[头下标:尾下标:步长]
(2)适用于字符串、列表、元组,列表和元组都是有序的集合,都能够通过索引值获取到对应的数据,字典是一个无序的集合,使用键值对保存数据

3.字符串格式化输出
(1)%

print(“我叫 %s 今年 %d 岁!”%(‘Coco’,1))
# 我叫 Coco 今年 1 岁!


(2)str.format()
基本语法是通过 {} 和 : 代替 %
1)format 函数可以接受不限个参数,位置可以不按顺序。

”{1} {0} {1}”.format(“hello”,”world”)
# ‘world hello world’

2)设置参数

>>>print(“姓名:{name},年龄:{age}”.format(name=”Coco”,age=1))
# 姓名:Coco,年龄:1
stu_dict={“name”:”Coco”,”age”:1} # 通过字典设置参数
print(“姓名:{name},年龄:{age}”.format(**stu_dict))
# 姓名:Coco,年龄:1
stu_list=[‘Coco’,1 ]             # 通过列表索引设置参数
print(“姓名:{0[0]},年龄:{0[1]}”.format(stu_list)) # “0”是必须的
# 姓名:Coco,年龄:1

3)传入对象

class AssignValue(object):def __init__(self,value):self.value = value
my_value = AssignValue(6)
print(“value is : {0.value}”.format(my_value))   # “0”是可选的

4.常用字符串处理

·连接/重复:+/*
·字符串长度 len(str)
·最大/小字母:max(str)/min(str)
·复制字符串:b = a;b = a[:]
·查找字符串:find() 找不到时,返回-1;index() 找不到时,崩溃
·连接字符串:“+”、operator.concat(str1,str2)、’’.join()
·替换字符串: +和[:]控制实现 #替换字符串头
·翻转字符串:s[::-1]
·比较字符串:operator.eq(s[:3], s_1[:3]) #指定长度比较(模块operator
·字符串比较,不区分大小写:operator.eq()与upper()或lower()共同完成
·小字符串在大字符串中出现的次数 str.count(substr,beg=0,end=len(string))
·分割字符串:split(){join的逆过程}当参数缺省时,默认按照空格划分出目标个数的字符串,内容不为缺省,则会产生空字符串
·判断一个字符串是否是另一个字符串的子串(re模块):
 1)re.search()判断前一个字符串是否是后一个字符串的子串,如果是,返回前一个字符串在后一个字符串中的位置,并显示匹配的具体内容,如果匹配不成功,返回None。
 2)不区分大小写,re.IGNORECASE; 使用时s = re.search(a, b, re.IGNORECASE)
·查找两个字符串中的最大匹配长度(diffla模块):
 1)SequenceMatcher函数,get_matching_blocks方法来看两个字符串中所有匹配的序列。
 2)print(s.find_longest_match())查看字符串的最大匹配序列。find_longest_match()要求第二个字符串长度不超过200,否则会出现错误。
 3)s.get_opcodes()返回元组,代表了从a字符串到b字符串,经历的变化。





2.3 列表

1.特点
使用中括号[]指定,有序,可重复,可读写,元素类型可以不同

2.基本操作
连接/重复:+/*
定义:names = [‘One’,“Two”,‘Three’,’Four’,’Five’]
长度:len(names)
最大:max(names)
最小:min(names)
切片:names[1:4] #取下标1-4之间的元素(不包括4)
追加:names.append(“Six”)
删除:del names[2]
修改:names[2] = “Second”
拷贝:names.copy()
清空:names.clear()
统计:names.count(“Four”)
排序:names.sort()
翻转:names.reverse()
扩展:names.extend(b)
获取下标:names.index(“Four”)
插入:names.insert(2,“Three前插入”)
移除列表中某个值的第一个匹配项:list.remove(obj)
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值:list.pop([index=-1])

3.列表推导式
[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]

4.列表遍历

2.4 元组

1.特点
使用小括号()指定,有序,可重复,只读,元素类型可不同
注意:空元组:tup=(),一个元素元组需要在后面加逗号:tup=(20,),不加逗号为整型
2.语法
names = (“alex”,“jack”,“eric”)
3.基本操作
连接/重复:+/*
长度:len(tuple)
元素最大值:max(tuple)
元素最小值:min(tuple)
删除整个元组:del tuple

2.5 集合

1.特点
使用大括号{}指定或set()函数创建,无序,不可重复,可读写,可变,不存在哈希值
注意:创建一个空集合必须用set(),不能用{},因为{}为创建空字典
2.基本功能
(1)消除重复元素
(2)关系测试 if ‘Rose’ in student: print(“Rose 在集合中”)
3.集合运算
(1)union(并集): print(a|b)
(2)intersection(交集):print(a&b)
(3)difference(差集):print(a-b)
(4)sysmmetric difference(对称差集):print(a^b)
4. 集合推导式
{表达式 for 变量 in 列表} 或者 {表达式 for 变量 in 列表 if 条件}
如,squared = {x**2 for x in [1, 1, 2]} print(squared) # Output: set([1, 4])
5. 基本操作
长度:len(s)
添加一项:s.add(‘x’)
添加多项:s.update([10,37,42])
删除一项:s.remove(‘H’),元素不存在会错误;s.discard(‘H’),元素不存在不会错误
随机删除:s.pop(),交互模式中pop是删除集合中第一个元素
清空集合:s.clear()
复制集合:s.copy()
测试 x 是否是 s 的成员:x in s
测试 x 是否不是 s 的成员:x not in s
测试是否 s 中的每一个元素都在 t 中:s.issubset(t) ,s <= t
测试是否 t 中的每一个元素都在 s 中:s.issuperset(t) ,s >= t
返回一个新的 set 包含 s 和 t 中的每一个元素:s.union(t) ,s | t
返回一个新的 set 包含 s 和 t 中的公共元素:s.intersection(t) ,s & t
返回一个新的 set 包含 s 中有但是 t 中没有的元素:s.difference(t) ,s - t
返回一个新的 set 包含 s 和 t 中不重复的元素:s.symmetric_difference(t) ,s ^ t
6.frozenset
冻结的集合,不可变,存在哈希值,可以作为字典的key,也可以作为其它集合的元素。一旦创建便不能更改,没有add,remove方法。

2.6 字典

1.特性
键值对,使用大括号{}指定,无序,可重复,可读写,key唯一,自动去重
2.语法
(1)info = {‘stu1101’: “TengLan Wu”,‘stu1102’: “LongZe Luola”,‘stu1103’: “XiaoZe Maliya”}
(2)构造函数dict()可以直接从键值对序列中构建字典
dict([(‘Runoob’,1),(‘Google’,2),(‘Taobao’,3)]
3.基本操作

print(info.keys())   # 输出所有键
print(info.values()) # 输出所有值:
len(info)            # 长度
info["stu1104"] = “aqiu" # 增加
info['stu1101'] = “tom"  # 修改
info.pop("stu1101")      # 标准删除
del info[‘stu1103’]      # 换个删除方式
info.popitem()           # 随机删除
info.clear()             # 清空字典
del info                 # 删除字典
"stu1102" in info        # 查找
info.get("stu1102")      # 获取

4.字典推导式
(1)例:大小写key合并

mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
mcase_frequency = { k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0) for k in mcase.keys() if k.lower() in ['a','b'] }
print mcase_frequency
# {'a': 17, 'b': 34}

(2)例:快速更换key和value

mcase = {'a': 10, 'b': 34}
mcase_frequency = {v: k for k, v in mcase.items()}
print mcase_frequency
# {10: 'a', 34: 'b'}

5.字典遍历
(1)遍历key值:在使用上,for key in a和 for key in a.keys():完全等价。

a = {'a': '1', 'b': '2', 'c': '3'}
for key in a:  print(key+':'+a[key])
# a:1 b:2 c:3
for key in a.keys():  print(key+':'+a[key])
# a:1 b:2 c:3

(2)遍历value值

for value in a.values():  print(value)
# 1 2 3

(3)遍历字典项

for kv in a.items():  print(kv)
# ('a', '1') ('b', '2') ('c', '3')

(4)遍历字典健值

for key,value in a.items(): print(key+':'+value)
# a:1 b:2 c:3
for (key,value) in a.items(): print(key+':'+value)
# a:1 b:2 c:3

2.7 序列类型间转换

转数字:int(x),float(x),complex(real,imag),hex(x),oct(x)
转列表:list(s):内容基本不会变化,只是改为标志[]
转元组:tuple(s):内容基本不会变化,只是改为标志()
转集合:set(s):内容基本不会变化,只是改为标志{}
转字典:dict(d):d必须是一个序列(key,value)元组
转字符串:str(x):在外侧强制加上字符串的标志(‘’/’’ ‘’/’’’ ‘’’)
注意:
(1)str转list或tuple时,str的内容会被拆解,用str的split方法可分割成list类型:

s = 'I Love Python'
s
# ‘I Love Python’
ls = s.split()
ls
# [‘I’,’Love’,’Python’]

(2)list或者tuple转str时,用.join()可以合并成str类型:

li=['人','生','苦','短','I','like','python']
li
# ['人','生','苦','短','I','like','python']
''.join(li)
# '人生苦短Ilikepython'

2.8 索引及切片

1.索引:[0~n-1],如,取出列表s中第3个元素:x=s[2]
2.切片:1~3个参数,说明:如果前2个参数中有负数,如果负数小于-n就归0,如果在-n~0就理解为0~n-1之间转圈圈(即倒序[-n~-1]);没有第3个参数时,切片只能从左向右,此时若第一个参数大于等于第二个参数(两参数同号),则返回空数组,第3个参数<0时,切片方向可以被改变,此时没有上述限制。
如:

array=[2,3,4,5,6]
array[1:]      # 从下标为1的元素选择到最后一个元素,返回 [2,4,5,6]
array[:3]      # 从下标为0的元素选择到下标为2的元素,不包括下标3的元素,返回[2,3,4]
array[::2]     # 从下标为0的元素开始到最后一个元素为止,步长为2
array[1:-2]    # 从下标1开始,到下标(n-1)之前的所有元素,返回[3,4]
array[-2:3]    # 没有第3个参数,第一个参数大于等于后一个,返回空数组[]
array[-13:3]   # 第一个参数归0,返回[2,3,4]
array[::-1]    # 从头到尾,将数组反转,返回[6,5,4,3,2]
array[-1::-2]  # 从尾到头,步长为2,返回[6,4,2]

Python学习笔记2 基本数据类型相关推荐

  1. python学习笔记2-基本数据类型

    在python3中数据类型是很简单的,对于数值只有整型int和浮点型float(python2中还有long),并没有c/c++中的单双精度类型. 同时认识到一些基本函数的功能 type():显示括号 ...

  2. Python学习笔记_1_基础_2:数据运算、bytes数据类型、.pyc文件(什么鬼)

    Python学习笔记_1_基础_2:数据运算.bytes数据类型..pyc文件(什么鬼) 一.数据运算 Python数据运算感觉和C++,Java没有太大的差异,百度一大堆,这里就不想写了.比较有意思 ...

  3. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

  4. 廖Python学习笔记一

    1. 廖Python学习笔记 大的分类 如函数 用二级标题,下面的用三级 如输入输出 1.1.1. 输入输出 1.1.1.1. 输出 用 print() 在括号里加上字符串,就可以向屏幕上输出指定的文 ...

  5. Python 学习笔记(3)对txt文件的读与写操作(下)

    上一章节我们讨论了如何对txt文本文件进行读写操作,这一张将讨论如何进行二进制文件的写与读.<Python 学习笔记(3)对txt文件的读与写操作(上)>的链接如下https://blog ...

  6. OpenCV之Python学习笔记(1)(2): 图像的载入、显示和保存 图像元素的访问、通道分离与合并

    OpenCV之Python学习笔记 一直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看到一本国外的新书< ...

  7. Python学习笔记:web开发1

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  8. Python学习笔记:访问数据库

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  9. Python学习笔记:第三方模块2

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

最新文章

  1. java 基本类型 引用类型_Java中的基本类型和引用类型变量的区别
  2. 李航《统计学习方法》-----朴素贝叶斯
  3. Python self,init,对象属性
  4. wp7 XAP部署工具
  5. esp8266教程:文件系统之spiffs
  6. Spring中静态代理与动态代理的实现及区别
  7. win10安装wget,从此可以更快的下载文件 and windows10 下 zip命令行参数详解
  8. 【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
  9. emlog5.3.1后台暴力破解
  10. zencart 模板设计
  11. 软件-未能加载文件或程序集.HRESULT:0x80131515解决方法
  12. 企业电子邮箱怎么写?企业邮箱登录入口是什么?
  13. linux-python升级到最新版本
  14. 计算机二维动画实验原理,浅析计算机二维动画制作
  15. css中的div容器笔记
  16. 华为EMUI屏蔽更新
  17. 【爬虫--cookie】
  18. YS动态口令系统接入流程
  19. rap2接口mock数据初始值和常用属性设置
  20. 云计算运营—03 KVM虚拟化技术方案介绍

热门文章

  1. 2022-2028年中国粘胶纤维市场投资分析及前景预测报告
  2. Sping中利用HandlerExceptionResolver实现全局异常捕获
  3. LeetCode简单题之好对数的数目
  4. 计图(Jittor) 1.1版本:新增骨干网络、JIT功能升级、支持多卡训练
  5. 嵌入式传感器是智能移动增长的关键
  6. CVPR2020:点云弱监督三维语义分割的多路径区域挖掘
  7. Ubuntu 系统安装Visual Studio Code
  8. Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(andro
  9. AHOI2008 聚会
  10. 【转载】浏览器事件循环机制(event loop)