列表
1.列表的创建
print(list(range(3,15,2)))
#同样包左不包右
print(list(range(15,3,-1)))
#可以倒序,要搭配负的步长
a=[x*2 for x in range(10) if x%2==0]
print(a)
#可以通过list创建符合条件的复杂列表
'''
一共四种创建方法
1.直接创建 a=[...]
2.list函数创建 a=list()
3.range创建 a=list(range(x,y,z)) 与slice的格式相同(可以反着创建)
4,推导式创建 a=[x for x in range() if x...]
'''
2.列表元素的增加
b=[10,20,30,40]
print(id(b))
b.append(50)
print(b)
print(id(b))
c=[10,20,30,40]
print(id(c+[50])) #"+"会新建一个新的对象
print(id(c))
a=[10,20,30,40]
a.extend([50,60])
print(a)
#可以连接两个列表,不产生新的对象,接续到尾部
a=[10,20,30,40]
a.insert(2,100)
print(a)
#insert()选择插入的位置以及插入的元素,非必要不要采用,因为会需要大量的变动,复杂度过高
'''
所有在非尾部进行操作的命令都会影响速度,例如insert,pop,remove
'''
3.列表元素的删除
#实际上所有的删除函数本质都是元素的拷贝,所以操作效率很低
a=[10,20,30,40,50]
del a[2]
print(a)
b=a.pop()
print(b)
#删除被返回指定元素,不制定就是最后一项
a.remove(20)
print(a)
#删除列表内首次出现的该元素
3.列表元素的索引
a=[10,20,30]
print(id(a))
a[1]=50 #列表可以修改,所以可以赋值
print(id(a))
print(a[1])
#索引范围要在len()以内,不然会报错
a=[10,24,10,23,45]
b=a.index(10)
c=a.index(10,1,3)
print(b,c)
#index()可以指定索引范围,返回同名字符的位置,类似字符串操作中的find
print(len(a))
print(a.count(10)) #可以用于成员资格的判断,返回0则说明不存在列表内
print(23 in a) #成员资格判断更简单的方法
#print(100 not in a) 不在的判断
4.列表slice
#与字符串slice完全相同
a=[1,2,3,4,5,6]
print(a[::-1])
print(a[2:4]) #end可以超出len上限 a[1:30]
print(a[::2])
5.列表排序
a.sort()
print(a)
print(id(a))
a=[10,30,50,20,40]
a.sort(reverse=True)
print(a)
#reverse是降序排列
a=[10,30,50,20,40]
print(a)
print(id(a))
random.shuffle(a)
print(a)
#以上排序语句都不会生成新的对象,调用的是列表对象
a=[10,30,50,20,40]
print(id(a))
a=sorted(a)
#生成新的对象,id不同,新对象需要重复指向变量
a=[10,30,50,20,40]
c=reversed(a) #也可以使用c=sorted(a,reverse=True) 这样会直接生成一个对象而非迭代器
print(list(c))
6.多维列表
a=[
["jim",18,2000,"上海"],["chen",19,3000,"北京"],["jack",21,4000,"深圳"]
]
#字符串一定要加引号!!
for i in range(3): #外部循环是总列表中的元素个数
for j in range(4): #内部循环是子列表中的元素个数
print(a[i][j],end="\t")
#循环打印输出,结尾退格符
print("")
#加一个空字符,输出换行
多维列表中的子列表应该是按行储存,按列索引再按行精准到目标