文章目录
一、列表
列表:大小可变,可随意增加减少数据
- | 按位或 有1就是1 全0才为0 类似于or
& 按位与 全1才是1 有0就是0 类似于and
^ 按位异或 相同为1 不同为0
a=3
a<<=2 (<<:左移)
12 左移几位相当于乘以几个2
(>>:右移)
- a<<=2
相当于a=a<<2 - 先乘除后加减
位运算符(^ |)和算数运算符>比较运算符>赋值运算符>逻辑运算符(is,is not,not,or,and,in,not in)
1. 列表创建
(1). list()创建
a={20,10,…}
list() 创建
a=list()
a=list(range(10))
(2). range()创建整数列表
- range(start,end,step)
- start参数:可选,表示起始数字。默认是0
- end参数:必选,表示结尾数字。
- step参数:可选,表示步长,默认为1。
2. 列表元素增加与删除
- 一般只会在列表尾部增加或者删除元素
(1).增加
- append()方法 列表元素增加 推荐使用 原地址操作
a=[20,40]
a.append[80]
a=[20,40,80]
- +运算符操作,+运算是产生一个新的列表
a=[20,40]
id(a)
得到a的地址
a=a+[50]
id(a)
得到新的a的地址
- extend()方法
a=[20,40]
a.extend([50,60])
a=[20,40,50,60]
- insert()插入元素,会影响处理速度,涉及大量元素时,尽量避免使用。类似的函数还有remove(),pop(),del()
a=[10,20,30]
a.insert(2,100). 在第2个位置插入100
a=[10,20,100,30]
- 乘法扩展,效果与字符串复制类似
(2).删除
- del
表面是删除,其实是将要删除的元素的后一个元素依次向前拷贝,然后删除最后一个字符(插入可以反过来想)
a=[10,20,30]
del a[1] 删除第二个元素
a=[10,30]
- pop()方法
pop()删除并返回指定位置元素,如果未指定则默认操作列表最后一个元素。
a=[10,20,30,40,50]
b=a.pop()
b=50
c=a.pop[1]
c=20
- remove()方法
删除首次出现的指定元素,若不存在该元素抛出异常。
a=[10,20,30,10]
a.remove[20]
a=[10,30,10]
a.remove(100)
a中没有,所以报错
3. 列表元素访问和计数
- 通过索引直接访问元素
- index()获得指定元素在列表中首次出现索引 index(value,start,end)start,end均可不写
a=[10,20,30,40,50,20,30,20,30]
a.index(20)
1
a.index(20,3)
从索引位置3开始往后搜索的第一个20
a.index(30,5,7)
6 从索引位置5到7这个区间,第一次出现30元素的位置
- count()获得指定元素在列表中出现的次数
a=[10,20,30,40,50,20,30,20,30]
a.count(20)
3
- len()返回列表的长度
- 成员资格的判断,一般使用in/not in 判断
4. 列表的遍历
for x in a
print(x,end=" ")
5. 列表排序
- 修改原列表,不建立新的列表排序
a.sort() #按照升序排列
a.sort(reverse=Ture) #按照降序排列
import radom
random.shuffle(a) #随机打乱顺序 - 建立新列表的排序
通过内置函数sorted()进行排序,这个方法返回新列表,不对原列表做修改。
a=sorted(a). #默认升序
a=sort(a,reverse=Ture) #按照降序排列 - reversed()返回迭代器
a=[20,10,30,40]
c=reversed(a)
print(list (c))
[40,30,10,20]
print(list (c))
空 #迭代器只能用一次
- max,min,sum(数值型列表求和,非数值型列表报错)
max[a],min[a],sum[a]
6. 二维列表输出
a=[
['赵一',26,30000,'北京'],
['赵二',27,30000,'杭州'],
['赵三',28,30000,'深圳'],
]
for m in range(3):
for n in range(4):
print(a[m][n],end='\t\t ')
pass
print( )
pass
二、元组tuple
- 元组属于不可变序列,元组没有增删改。
1. 元组创建
- 通过()创建元组,小括号可以省略。如果括号中只有一个数字,要在数字后加一个逗号。
- 通过tuple()创建元组。
b=tuple()
b=tuple(range(3))
b=tuple(‘abc’)
b=tuple([2,3,4]) - 元组的元素访问和计数,同列表
2. zip
- zip(列表1,列表2,…)将多个列表应对位置和元素组合成元组,并返回这个zip对象
a=[10,20]
b=[30.40]
c=[50,60]
d=zip(a,b,c)
list(d)
[(10,30,50),(20,40,60)]
3.生成器推导式创建元组
s=(x*2 for x in range(5))
print(s)
print('*********')
print(tuple(s))
print(tuple(s))
运行结果:
<generator object <genexpr> at 0x000001C36DB1D820>
*********
(0, 2, 4, 6, 8)
()
4.元组总结
- 元组的核心特点是:不可变序列
- 元组的访问和处理速度比列表快
- 与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用