1.list列表
列表是python中的容器类型,有序的,可变的容器(可变指的是列表中的元素和元素的位置、个数可变)元素:值的是列表中的每一个内容
有序 -> 可以通过下标来获取元素
可变 -> 可以进行增删改(查)
2.列表的声明:声明了一个列表,列表中有5个元素
scores=[90,80,70,60,50]
scores = [90,80,70,60,50]
print(scores)
声明了一个列表,列表中有三个元素:一个列表中元素的类型可以不一样
person = ['张三',24,'男']
print(person)
声明一个空的列表
person = []
将其他的数据类型转换成列表,序列可以转换成列表
chars = list(序列) 字符串,range(),字典,元组,集合,生成式和迭代器
numbers = list(range(11))
print(numbers)
3.列表的增删改查
1).查:获取单个元素:列表[下标]:下标范围0元素个数-1,或者-1-元素格式
numbers = [90,80,70,60]
print(numbers[2])
a.获取部分元素(切片):列表[下标1,下标2] /列表[下标1:下标2:步进]
注意:
下标2的值不能获取到
结果是列表
步进是正的是从前往后去取,步进是负的是从后往前取
切片时,下标是可以越界的
print(numbers[0:2:1])
b.遍历(一个一个获取每个元素)
for item in numbers:
print(item)
可以将列表直接放到for循环的in的后边
循环过程中,for后面的变量取的是列表中的每个元素
练习:写一个列表来保存一个班的学生的成绩(6个),统计成绩在80(包括80)分以上的个数
scores = [90,80,70,60,89,50]
count = 0
for score in scores:
if score >= 80:
count += 1
print(count)
2).改
语法:列表名[下标] = 新值(通过下标获取元素,修改新值)
numbers[1] = 90
3).增(增加列表的元素,添加元素)
a.列表.append(元素):在列表末尾添加一个元素
numbers.append(90)
b.列表.insert(索引,元素):在指定的下标前添加一个元素
列表中元素的个数发生改变后,列表中的索引会重新分配,插入的下标后
所有下标+1
numbers.append(0,100)
练习:录入5个学生的成绩,并保存到列表中
scores = []
for _ in range(5):
scores.append(int(input('Please input score:')))
print(scores)
4).删(删除列表中的元素)
a.del 列表[下标] -->根据下标去删除列表中的元素
del 语句是python中删除数据的语法,他可以删除任何数据:del 变量(删除变量) del 列表(删除整个列表)
del numbers[1] #删除下标是1的函数
del numbers
name ='0'
del name #删除变量
b.列表.remove(元素) -->删除列表中指定的元素
numbers.remove(80)
print(numbers)
c.列表.pop(下标) -->将指定的下标的元素从列表中取出来,并将列表中的该元素删除
num = numbers.pop(1)
print(numbers)
print(num)
练习:将一个保存成绩的列表中成绩低于60分的全部删除
[78,59,40,90,89,45,69,30] --> [78,90,89,69]
scores = [78,59,40,90,89,45,69,30]
# i = 0
# while i= 60:
scores02.append(scores[i])
i += 1
print(scores02)
#切片时复制一份新的列表,遍历是在切片出来的列表中遍历
#删除是在原列表删除
for score in scores[:]:
if score<60:
scores.remove(score)
print(scores)
#注意:以后遍历列表的元素的时候,我们一般遍历它的拷贝的值([:])
python中,变量在存数据的值的时候,会根据数据类型的不同,使用两种方式来存值
值类型:变量存数据直接存值,例如:整型、浮点型、布尔、字符串
引用类型:变量存数据的时候,存的是数据在内存中的地址。例如:列表,字典,元组,集合。函数类型,自定义类的对象等
先将列中a1中的数值赋给c1,再将其放到新的地址中
c1 =a1[:]
4.列表中的运算
a).+操作
列表1+列表2:将列表1中的元素和列表2中的元素依次合并,并产生一个新的列表
a=[1,2]
list1=a+['abc',100]
print(list1,a)
b).操作:将列表中的元素重复重复N次,产生一个新的列表
列表1N:
list3=a*3
#[1,2,1,2,1,2]
c).in/not in:判断一个元素是否在/不在列表中
print(1 in a) #True
d).len(列表):获取列表中的长度,指的就是列表中元素的个数
len(序列)
len(a)
5.相关的方法
a).list.append(obj):在列表末尾添加元素
b).list.count(obj):统计某一个元素在列表中出现的次数
a.count(1)
c).list.extend(序列):将序列中的元素添加到列表中,一个一个取出来添加到列表中
a.extend('abc') #[1,2,'a','b','c']
d).list.index(obj):获取指定元素在列表中第一次出现的对应的下标
a.append(2)
a.index(2) #1
e).list.pop(下标):取出列表中指定下标的元素
list.pop():取出列表中最后一个元素
a.pop() #2
f).list.remove(obj)
注意:如果这个元素在列表中有多个,只删除最前面的那一个
g).list.reverse():反转,将列表反向
a.reverse() #[2,1]
h).list.sort(cmp=None,key=None,reverse=False):对序列进行排序,默认是升序(小到大)
list.sort(reverse=True):降序排序
i).list.clear():将列表中的元素全部清除
j).list.copy():将列表中的元素全部拷贝一份产生一个新的列表
注意:这儿的拷贝是浅拷贝,浅拷贝不涉及引用类型,如果有引用数据类型浅拷贝不会进行真正的拷贝
深拷贝会进行引用数据类型的具体的值的拷贝。
浅拷贝:只是单纯将值进行拷贝,如果是对象就直接拷贝对象的地址
深拷贝:会拷贝对象地址对应的值,并产生一个新的地址,将新的地址进行赋值copy.deepcopy()
a=[1,2]
a.extend('abc')
print(a)
#(tuple)元组就是不可变的列表,列表中除了和可变相关的内容以外,其他的全部适用于元组
6.声明元组:
变量名 = (数据1,数据2,...数据n)
如果元组只有一个元素,必须要向以下方式书写,在唯一一个元素后面加一个逗号
变量名 =(100,)
变量名 = () #表示空的元组
不支持增加、删除、修改。只支持查询相关的操作
t3=(1,2,3,4,5)
-切片
t3[0:3]
-索引
t3[0]
-遍历:
for i in t3:
print(i)
7.特殊操作:
pint=(100,200)
print(point[0],point[1])
x,y=point #通过两个变量来获取元组中的唯一两个值
print(x,y)
通过加*获取元组中的一部分元素值,最终的类型是列表
user = ('小吕',90,98,56,'男')
name,*score,sex=user
#获取除第一个以外的后面所有的值
user2 = ('小红',100,80,70)
name,*score = user2
user3 = (100,80,70,'小红')
*score,name = user3
多个值之间用逗号隔开,对应的数据也是元组
a = 1,2,4,5 相当于a=(1,2,4,5)
print(type(a))
x,y = y,x 相当于 x,y=(y,x)