| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Python基础学习Day3 -> 正文阅读 |
|
[移动开发]Python基础学习Day3 |
可变字符串 在python中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,智能创建新的字符串对象。但是,经常我们确实需要原地修改字符串,可以使用io.StringIO对象或array模块 >>>import io >>>s='hello.sxt' >>>sio = io.StringIO(s) >>>sio <_io.StringIO object at 0x000002496F8BE320> >>>sio.getvalue() 'hello.sxt' >>>sio.seek(7) 7 >>>sio.write("g") 1 >>>sio.getValue() 'hello.sgt' 基本运算符 前面学习了“+”、“-”、“*”、“/”、“//”、“%”等运算符 1.比较运算符可以连用,并且含义和我们日常使用完全一致 >>>a=4 >>>3<a<10 #关系运算符可以连用 >>>True
??>>>a=0b11001 ???#0b是二进制 ??>>>b=0b01000 ??>>>a ??25 ??>>>b ??8 ??>>>c=a|b #a或b返回a ??>>>c ??25 >>>bin(c) ????#bin()可以将数字转成二进制表示 ??‘0b11001’ ??>>>c=a&b ?#a与b返回b ??>>>c ??8 ??>>>c=a^b ??>>>c ??17 ??>>>a=3 ??>>>a<<2 #左移1位相当于乘以2,左移2位,相当于乘以4 ??12 ??>>>a=8 ??>>>a>>1 ?#右移1位,相当于除以2 ??4 注:异或 1.计算a,b的二进制值: 2.^符号的作用是将两数字相同位置但是数值不同的值变为1,即经过^计算获得字符串‘ob11001’ 3.随后将二进制的‘ob1101110’转化为十进制的值即为:17 以上就是^的计算过程。 Python位运算符按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下: 下表中变量 a 为 60,b 为 13,二进制格式如下: a = 0011 1100 b = 0000 1101 ----------------- a&b = 0000 1100 a|b = 0011 1101 a^b = 0011 0001
[10,20,30]*3 ==>[10,20,30,10,20,30,10,20,30] 复合赋值运算符 复合赋值可以让程序更加精炼,提高效率 ?运算符优先级问题 ? 实际使用中,记住如下简单规则即可,复杂表达式一定要使用小括号组织
?==>(5+10*x)/5-13*(y-1)*(a+b)/x+9*(5/x+(12+x)/y) 第三章 序列 ???序列是一种数据存储方式,用来存储一系列的数据。在内存中,序列就是一块用来存放多个值连续的内存空间。比如一个整数序列[10,20,30,40],可以这样示意表示:
Python3中一切皆对象,在内存中实际是按照如下方式存储: ???????????????????a=[10,20,30,40] (4个对象10,20,30,40都有各自地址,每个对象都有自己的①id②type③value) 把四个对象的地址依次存入序列中,最后通过索引可以找到变量a持有的地址a{0}=10 从图示中,我们可以看出序列中存储的是整数对象的地址,而不是整数对象的值。Python中常用的序列结构有: ??????????字符串、列表、元组、字典、集合 字符串就是一种序列 列表简介 列表:用于存储任意数目、任意类型的数据集合 列表是内置可变序列,是包含多个元素的有序连续的内存空间。列表定义的标准语法格式: ???????????????????????a=[10,20,30,40] 其中,10,20,30,40这些称为:列表a的元素 列表中元素可以各不相同,任意类型。比如: ?????????????????????????a=[10,20,’abc’,True] 列表常用方法: Python列表大小可变,根据需要随时增加缩小 字符串和列表都是序列类型,一个字符串是一个字符序列,一个列表是任何元素的序列 列表的创建 基本语法[]创建 >>>a=[10,20,’gaoqi’,’sxt’] >>>a=[] ???#创建一个空的列表对象 list()创建 使用list()可以将任何可迭代的数据转换成列表
range()创建整数列表 range()可以帮助我们非常方便的创建整数列表,语法格式为: ???????????????Range([start,]end[,step]) start参数:可选,表示起始数字,默认为0 end参数:必选,表示结尾数字 Step:可选,表示步长,默认为1 Python3中range()返回的是一个range对象,而不是列表,我们需要通过list()方法将其转换成列表对象。 示例:
推导式生成列表 使用推导式列表可以非常方 便的创建列表(涉及到for循环和if语句,仅基本介绍)
列表元素的增加和删除 ??当列表增加和删除元素时,列表会自动进行内存管理,大大减少了程序员的负担。但这个特点涉及到列表元素的大量移动,效率较低。除非必要,我们一般只在列表的尾部添加元素或删除元素,这会大大提提高列表的操作效率。 Append()方法 ??原地修改列表对象,是真正的列表尾部添加新的元素,速度最快,推荐使用
+运算符操作 ??并不是真正的尾部添加元素,而是创建新得列表对象;将原列表的元素和新列表的元素依次复制到新的列表对象中。这样会涉及到大量的复制操作。对于操作大量元素不建议使用
通过如上测试,我们发现变量a的地址发生了变化。也就是创建了新的列表对象 extend()方法 ??将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象 ?(适合列表拼接)
insert()方法 使用insert()方法可以将指定的元素插入到列表对象的任意指定位置。这样会让插入位置后面所有的元素进行移动,会影响处理速度。涉及大量元素时,应避免使用。类似发生这种移动的函数还有remove(),pop(),del(),它们在删除非尾部局部元素时也会发生操作位置后面元素的移动。
乘法扩展 使用乘法扩展列表,生成一个新列表,新列表元素是原列表元素的多次重复。
列表元素的删除 del删除 删除列表指定位置的元素(删除和增加本质上都是元素的拷贝,位置的挪动)
pop()方法 pop()删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素
remove()方法 删除首次出现的指定元素,若不存在该元素抛出异常
列表元素访问和计数 通过索引直接访问元素 我们可以通过索引直接访问元素。索引的区间在[0,列表长度-1]这个范围。超过这个范围则会抛出异常。
Index()获得指定元素在列表中首次出现的索引 Index()可以获取指定元素首次出现的索引位置。语法是:index(value,[start,[end]])。其中,start和end指定了搜索的范围。
count()获得指定元素在列表中出现的次数 count()可以返回指定元素在列表中出现的次数。
len()返回列表长度 len()返回列表长度,即列表中包含元素的个数
成员资格判断 判断列表中是否存在指定的元素,我们可以使用count()方法,返回0则表示不存在,返回大于0则表示存在。但是,一般我们会使用更加简洁的in关键字来判断,直接返回True或False
切片操作 列表的切片操作和字符串类似。 切片是python序列及其重要的操作,适用于列表、元组、字符串等等。切片格式如下: 切片slice操作可以让我们快速提取子列表或修改。标准格式为: ??[起始偏移量start:终止偏移量end[:步长step]] 注:当步长省略时顺便可以省略第二个冒号 典型操作(三个量为正数的情况)如下:
其他操作(三个量为负数)的情况:
? 切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始偏移量小于0则会当做0,终止偏移量大于“长度-1”会被当成-1,例如: >>>[10,20,30,40][1:30] [20, 30, 40] 没有报错 列表的遍历 For obj in listObj: ???Print(obj) 列表排序 修改原列表,不建新列表的排序
建新列表的排序 我们也可以通过内置函数sorted()进行排序,这个方法返回新列表,不对原列表做修改
reverse()返回迭代器 内置函数reversed()也支持进行逆序排列,与列表对象reverse()方法不同的是,内置函数reversed()不对原列表做任何修改,只是返回一个逆序排列的迭代器对象。
我们打印输出c发现提示是:list_reverseiterator。也就是一个迭代对象。同时,我们使用list(c)进行输出,发现只能用一次。第一次输出了元素,第二次为空,那是因为迭代对象在第一次时已经遍历结束了。第二次不能再使用。 列表相关的其他内置函数汇总 max 和 min 用于返回列表中最大和最小值
sum 对数值类型列表的所有元素进行求和操作,对非数值型列表运算则会报错。
多维列表 二维列表 一维列表可以帮助我们存储一维、线性的数据。 二维列表可以帮助我们存储二维、表格的数据。例如下表数据:
?嵌套循环打印二维列表所以数据
元组tuple 列表属于可变序列,可以任意修改列表中的元素,元组属于不可变序列,不能修改元组中的元素。因此,元组没有增加元素、修改元素、删除元素相关的方法。 ??因此,我们只要学习元组的创建和删除,元组中的元素的访问和计数即可,元组支持如下操作:
元组的创建
???a= (10,20,30) 或者 a=10,20,30 ???如果元组只有一个元素,则必须后面加逗号,这是因为解释器会把(1)解释为整数1,(1,)解释为元组
? ? 2.通过tuple()创建元组。 ?tuple(可迭代的对象) ?(转化为元组)
总结: ???tuple()可以接收列表、字符串、其他序列类型、迭代器等生成元组 ???list()可以接收元组、字符串、其他序列类型、迭代器生成列表。 元组的元素访问和计数 1.元组的元素不能修改
2.元组的元素访问和列表一样,只不过返回的仍然是元组
3.列表关于排序的方法list.sorted()是修改原列表对象,元组没有该方法,如果要对元组排序,只能使用内置函数sorted(tupleObj),并生成新的列表对象
ZIP Zip(列表1,列表2...)将多个列表对应位置的元素组合为元组,并返回这个zip对象
生成器推导式创建元祖 ?
元组总结
|
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 8:57:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |