其他的运算符
符号 | 说明 |
---|---|
| | 按位或 |
^ | 按位异或 |
& | 按位与 |
<< | 左位移 |
>> | 右位移 |
~ | 按位翻转 |
注意:python中可以直接写1<a<3。
bin()可将十进制数以二进制显示。
移位时使用 a<<2 表示a 左移2位,相当于乘2*2。
运算符的优先级:虽然有明确的规则,但实际上使用小括号来分隔即可,不必记忆。(乘除优先加减;位运算和算数运算>比较运算>赋值运算>逻辑运算)
序列
序列是一种数据存储方式,用来存储一系列的数据。在内存中,序列就是一块用来存放多个值的连续的内存空间。
python中常用的序列结构有:字符串、列表、元组、字典、集合
变量中存储的是地址,然后根据地址索引值。
列表
用于存储任意数目、任意类型的数据集合,列表的长度可变。
列表对象常用的方法
方法 | 要点 | 描述 |
---|---|---|
list.append(x) | 增加元素 | 将元素x增加到列表list尾部 |
list.extend(aList) | 增加元素 | 将列表aList所有元素加到list尾部 |
list.insert(index,x) | 增加元素 | 在列表list指定位置index处插入元素x |
list.remove(x) | 删除元素 | 在列表list中删除首次出现的指定元素x |
list.pop([index]) | 删除元素 | 删除并返回列表list指定为止index的元素,默认是最后一个元素 |
list.clear() | 删除所有元素 | 删除列表中所有元素,并不删除列表对象 |
list.index(x) | 访问元素 | 返回第一个x的索引位置,若不存在x元素则抛出异常 |
list.count(x) | 计数 | 返回指定元素x在列表list中出现的次数 |
len(list) | 列表长度 | 返回列表中包含元素的个数 |
list.reverse() | 翻转列表 | 所有元素原地翻转 |
list.sort() | 排序 | 所有元素原地排序 |
list.copy() | 浅拷贝 | 返回列表对象的浅拷贝 |
列表的创建
1.使用[]创建
a=[1,2,'temmie']
2.list()创建,将任何可以迭代的数据转化为列表
a=list(range(10))#结果为[0,1,2,3,4,5,6,7,8,9]
b=list('aaa,temmie')#结果为['a', 'a', 'a', ',', 't', 'e', 'm', 'm', 'i', 'e']
3.list(range())创建整数列表
list(range(start,end,step))
start:可选,表示起始数字,默认为0。
end:必选,表示结尾数字。
step:可选,表示步长,默认为1。
4.推导式创建列表
列表元素的增加
如果在列表中间添加内容,添加位置的后面所有内容都要进行移动,是低效率的,因此建议列表的增加或删除尽量在列表尾部。
1.append()方法
a=[2,4]
print(a)
a.append(8)
print(a)
2.+运算符
对列表进行拼接,会产生新的对象,不建议使用
a=[1,2]
print(a,id(a))
a=a+[3]
print(a,id(a))
地址发生了变动
3.extend()方法
不会创建新对象
a=[1,2]
print(a,id(a))
a.extend([3,4])
print(a,id(a))
4.insert()方法
将某个元素插入对象的任意位置,这样就会导致前面说的大量数据需要变更位置,效率很低。
a=[0,1,2,3,4]
print(a)
a.insert(2,'!')
print(a)
5.乘法扩展
列表元素的删除
1.del删除
a=list(range(0,10,1))
print(a)
del a[1]
print(a)
2.pop()方法
删除并返回指定位置元素,如果未指定则默认操作列表的最后一个元素。
a=[0,1,2,3,4,5]
print(a.pop(),a)
print(a.pop(0),a)
3.remove()方法
删除首次出现的指定元素,若不存在则抛出异常。
列表元素的访问与计数
1.通过索引访问
索引范围从0到n-1
2.index()语法
获得指定元素在列表中首次出现的索引。
还可以写index(start,end)规定搜索的起始与结束。
3.count()语法
返回指定元素在列表中出现的次数。
4.len()语法
返回列表的长度,即包含元素的个数。
5.in判断
a in b判断a是否在b中,在返回True,否则返回False
列表的切片操作
slice可以快速提取子列表或修改。
参考字符串的切片,差别在于字符串的是提取字符,这里是提取元素。
列表的遍历
相当于 for x in range()
将range换成列表,这样x就一次取得列表的元素值。
列表的排序
无论字符串还是数字、字母都能排序。
1.修改原列表,不创建新列表的排序。
a=[0,1,5,6,3,4,2.1]
a.sort()#默认升序排序
a.sort(reverse=True)#降序排序
随机排序
import random
a=[0,1,2,3,4,5]
random.shuffle(a)
print(a)
2.创建新列表,不修改原列表
使用sorted()创建新的对象。其他格式和sort()一样。
3.reversed()迭代器实现翻转
迭代器只能使用一次。
a=[0,1,2,3,4,5,6]
b=reversed(a)#b现在是一个迭代器,不是翻转后的结果
print(b,list(b))
其他
语法 | 说明 | 例子a=[3,10,20,15,9] |
---|---|---|
max | 返回列表最大值 | max(a)>>20 |
min | 返回列表最小值 | min(a)>>3 |
sum | 对数值型列表求和,非数值型报错 | sum(a)>>57 |
多维列表
多维列表就是列表套列表
[[列表1],[列表2],[列表3],[列表4]]
以二维为例
二维列表样式如下:
为了实现这个列表,我们可以将它写成
a = [
["高小一",18,30000,"北京"],
["高小二",19,20000,"上海"],
["高小一",20,10000,"深圳"],
]
for m in range(3):
for n in range(4):
print(a[m][n],end="\t")
print() #打印完一行,换行
元组
tuple,元组是不可变序列,创建后完全不能修改。
元组支持的操作:1.索引访问;2.切片操作;3.连接操作;4.成员关系操作;5.比较运算操作;6.计数,包括元组长度len(),最大值max(),最小值min(),求和sum()等。操作方法与列表相同
对元组进行排序需要使用sorted,但产生是列表对象。
zip()语句,zip(列表1,列表2,列表3)可以将多个列表组成元组,并返回这个zip对象。
a=[1,2,3]
b=[4,5,6]
c=[7,8,9]
d=zip(a,b,c)
print(d)
e=list(d)
print(e)
元组的创建
1.使用()创建元组,小括号可以省略
a=(1,2,3)
b=1,2,3
print(a,'\n',b)
2.tuple()语法创建元组
使用方法同list()语法。
a=tuple(range(10))#结果为(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
b=tuple('aaa,temmie')#结果为 ('a', 'a', 'a', ',', 't', 'e', 'm', 'm', 'i', 'e')
print(a,'\n',b)
如果你的元组中只有一个元素,那么它应该写成如:a = (1,)或a = 1,的样式,否则会被认为是一个数。
3.生成器推导式生成元组
方法与列表使用生成器方法相同。