把一个数字转为二进制表示bin()
<<左移1位相当于乘以2,左移2位,相当于乘以4
>>右移1位相当于除以2
注:位运算符比单纯的使用*快的多
1.数字相加 : a+b
2.字符串拼接 :"a"+"b"
3.列表元组等合并 :list+[1,2,3]
1.数字相乘 :a*b
2.字符串赋值
3.列表,元祖等复制: list*3
实际使用中,记住如下简单的规则即可,复杂的表达式,一定要使用小括号组合
1.乘除优先加减
2.位运算和算数运算>比较运算符>赋值运算符>逻辑运算符
序列是一种数据存储方式,用来存储一系列的数据.在内存中,序列就是一块用来存放多个值的连续的空间内存.比如说一个整数序列[10,20,30,40],可以这么表示:
由于Python3中一切都是对象,在内存中实际上是按照如下的方式存储的:
从图示中,我们可以看出序列中存储的是整数对象的地址,而不是整数对象的值.Python中常用的序列结构有:
字符串,列表,元祖,字典,集合
列表:用于存储任意数目,任意类型的数据集合
列表是内存可变序列,是包含多个元素的有序连续的内存空间.列表定义的标准语法格式:
a=[0,1,2,3]
其中,0,1,2,3这些称之为:列表a的元素
列表中的元素可以各不相同
比如
a=[1,"tang",True]
列表常用的方法
Python的列表可大可小,根据需要随时增加或减小
字符串和列表都是序列类型,一个字符串是一个字符序列,一个列表是任何元素的序列.前面的很多操作字符串的放啊,在列表中也可以找到类似的进行使用
a=[1,2,True,"abc"]
a=[] #创建一个空的列表对象
使用list()可以将任何可迭代的数据转化成列表
a=list() #创建一个空的列表对象
a =list(range(10))
a=list("I love you every day")
range()可以帮助我们分厂方便的创建整数列表,这在开发中及其有用.语法格式为:
range([start], end [,step])
start 参数:可选.表示起始数字.默认0
end 参数: 必选,表示结尾数字
setp: 可选,表示步长,默认为1
Python3中range()返回的是range()对象,而不是列表.我们需要通过list()方法将其转换成列表对象
例:
使用列表推导式可以非常方便的创建列表,在开发中经常使用
通过if过滤条件
当列表增加和删除元素时,列表会自动进行内存管理,打打减少了程序员的负担.但这个特点涉及到列表的大量移动,效率较低,除非必要,我们一般只在列表的尾部添加元素或删除元素,这会大大提高列表的操作效率.
原地修改列表独享,是真正的列表尾部添加新的元素,速度最快,推荐使用.
a=[10,20]
a.append(30)
并不是真正的尾部添加元素,而是创建新的列表对象;将愿列表的元素和新列表的元素一次赋值到新的列表对象中.这样,会涉及大量的复制操作,对于操作大量元素不建议使用.
a=[10,20,30,40]
a = a+[50]
将目标列表所有的元素添加到本列表的尾部,属于原地操作,不创建新的列表对象.
使用insert()方法可以将指定元素插入到列表的任意指定位置.这样会让插入位置后面的所有元素都进行移动,会影响处理速度.涉及大量元素时,尽量避免使用.类似发生这种移动的函数有:remove(),pop(),del().
它们在删除非尾部元素时也会发生操作位置后面的元素移动
使用乘法扩展列表,生成一个新的列表,新列表元素是愿列表的多次重复
适用于乘法操作的还有:字符串,元组.
删除列表指定位置的元素(指定位置之后的所有元素的索引都-1)增加同样与之相反
pop()删除并返回指定位置的元素,如果未指定默认位置则默认删除列表的最后一个元素
pop(index);指定删除某个位置的元素
删除首次出现的指定元素(具体指),若不存在该元素抛出异常
我们可以通过索引直接访问元素,索引的区间在[0,列表长度-1]这个范围.超过这个范围则会抛出异常
a = [0,10,20,30,40,50,60,70,80,90]
a[2]->20
index()可以获取指定元素首次出现的索引位置.语法是:index(value,[start,[end]]]).
其中:start和end指定了搜索的范围
count()可以返回指定元素在列表中出现的次数
a = [1,2,5,3,6,8,4,1,2,5,8,6,321,1,2,1]
len()返回列表长度,即列表中包含元素的个数
a = [1,2,5,3,6,8,4,1,2,5,8,6,321,1,2,1]
判断列表中是否存在指定元素,我们可以使用count()方法,返回0则表示不存在,返回大于0则表示存在.但是,一般我们会使用更简洁的in关键字来判断,直接返回True或False
前面字符串学习的时候,有字符串的切片操作,对于列表的切片操作和字符类似
切片是Python序列及其重要的操作,适用于,列表,元组,字符串等等.切片的格式如下
切片的slice操作可以让我们快速提取子列表或修改.标准格式为:
[起始偏移量start:终止偏移量 end[:步长 step]]
注:当步长没哟的时候顺便可以省略第二个冒号
典型操作(三个变量都是正数)如下:
其它操作(三个变量都是负数)的情况:
切片操作室,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错.
起始偏移量小于0则会当做0,终止偏移量大于"长度-1"会被当成长度-1.
sort()默认是升序排列
使用 sort(reverse=True)可以进行降序排列
我们也可以通过内置函数sorted()进行排序,这个方法返回新列表,不对原列表做修改
同理 sorted(a,reverse=True)进行降序排列
内置函数reversed()也支持进行逆序排列,与列表对象reverse()方法不对原列表做任何修改,只是返回一个逆序排列的迭代器对象.
当前情况下迭代器只能使用一次
用于返回列表中的最大值和最小值
对数值型列表的所有元素进行求和的操作,如非数值型列表运算则会报错
引用
内存结构图
遍历读取内容
方法一:
方法二:
优化后