什么是列表(list)
列表是python提供的容器型数据类型(序列),可变、有序
可变(元素的个数、值、顺序可变) - 支持增加、删除、改变
有序 ---支持下标操作
列表数据:用[元素1,元素2,元素3,...]
元素:1.python支持的任何类型的数据(值、赋值的变量、除了赋值符以外的其他运算表达式)
2.不同元素的类型可以不一样
list1 = [10,12.0,True,'ASD',[1,2]]
num = 10
list2 = [num ,num*10+2,'abc'.count('a')]
print(list2)
列表元素操作
1.查---获取列表元素
1)获取单个元素
'''
语法:
列表[下标]---获取列表中制定下标对应的元素
注意:下标不能越界 要报错
names = ['大da','碗wan','宽kuan','面mian','1']
print(names[1])#碗wan
print(names[-1])#面mian
1)获取部分元素(切片)----结果是列表
列表[开始下标:结束下标:步长]
print(names[1:-1])#['碗wan', '宽kuan']
list2 = names[-1:1]#不报错结果是 []
print(names[:3:-1])#['碗wan', '宽kuan']
2)遍历
for 变量 in 列表:
循环体
变量直接取到的是列表中的每个元素(item --- 元素; index ---下标
直接遍历元素
names = ['大da','碗wan','宽kuan','面mian','1']
for name in names:
print(name)
遍历下标
for index in range(len(names)):
print(names[index])
补充
isinstance(数据,类型)--判断指定的数据是否是指定类型
print(isinstance(10.0,int))#Flase
print(isinstance(10,int))#True
count = 0
list3 = [1,3,5,'1',[1,2],]
for a in list3:
if isinstance(a,int):
count += 1
print(a)
列表元素操作
1.增 - 添加元素
1)列表.append(元素)----列表最后添加一个元素(修改原列表不会产生新的列表)
films = ['妇联4','指环王','绿皮书','你的名字','千与千寻']
films.append('黑暗骑士')
print(films)#['妇联4', '指环王', '绿皮书', '你的名字', '千与千寻', '黑暗骑士']
n = films.append
print(n)#什么都没有 不能这样用
2.列表.insert(下标,元素)---在列表的指定下标前添加指定元素
films.insert(2,'黑暗骑士归来')
print(films)#['妇联4', '指环王', '黑暗骑士归来', '绿皮书', '你的名字', '千与千寻', '黑暗骑士']
练习:有一个有序的数字列表,输入一个数将它插入列表中,要求插入后不改变排列方式
[1,12,32,45,60]
输入3:
nums = [1,12,32,45,60]
num = int(input('请输入:'))
for index in len(nums):
if index >= num:
nums.insert(index,num)
break
else:
nums.append(num)
print(nums)
2.删除列表中元素
1)del列表[下标] - 删除列表中指定下标对应的元素
films = ['妇联4','指环王','绿皮书','你的名字','千与千寻']
del films[1]
print(films)#['妇联4', '绿皮书', '你的名字', '千与千寻']
del films[-1]
print(films)#['妇联4', '绿皮书', '你的名字']
下标不能越界
列表。remove(元素)--删除列表中指定的元素 如果被删元素有多个 他只删除第一个
#如果删除元素不存在 就会报错
films = ['妇联4','指环王','绿皮书','你的名字','千与千寻']
films.remove('指环王')#['妇联4', '绿皮书', '你的名字', '千与千寻']
films = ['妇联4','指环王','绿皮书','指环王','你的名字','千与千寻']
films.remove('指环王')
3.列表.pop() - 取出列表中最后一个元素
列表.pop() - 取出列表中制定下标的元素
films = ['妇联4','指环王','绿皮书','你的名字','千与千寻']
del_value = films.pop()
print(films,del_value)#['妇联4', '指环王', '绿皮书', '你的名字'] 千与千寻
del_value = films.pop(0)
print(films,del_value)#['指环王', '绿皮书', '你的名字'] 妇联4
练习:删除列表中成绩低于60的
scores = [70,45,50,87,67,30,100]
for index in range(len(scores)-1,-1,-1):#取值从后向前取,不然会漏掉
if scores[index] <= 60:
del scores[index]
else:
print(scores)
scores = [70,45,50,87,67,30,100]
for score in scores[:]:#scores[:]中的值不会随着循环减少 就不会漏掉值
if score < 60:
scores.remove(score)
print(scores)
注意:遍历删除的时候需要考虑
3.改 - 修改元素的值
列表[下标] = 新值 -----修改指定下标对应的元素为新值
balls = ['乒乓','足球','篮球','排球']
balls[3] = '羽毛球'
print(balls)
60分以下改为'不及格‘
scores = [70,45,50,87,67,30,100]
1.列表运算符
数学运算: + , *
列表1 + 列表2 -----两个列表中的元素合并产生新的列表
new_list = ['a','b','c'] + [1,2,3]
print(new_list)
列表1 * N---------列表中的元素重复N次产生新的列表
print([1,2,3]*3)
2.比较运算:只比较相等 比较大小和字符串比较一样
print([1,2,3]==[1,2,3]) #True
print([1,2,3]==[1,3,2]) #False
值和顺序都要相等
in/ not in
元素 in 列表 ----判断列表中是否包含指定的元素
print([1,2] in [1,2,3,4,5]) #False
print([1,2] in [[1,2],3,4,5]) #True
len(列表)-----获取列表中元素的个数
list(数据)----将制定数据转换成列表
'''
所有的序列都可以转换成列表(字符串,range,列表)将序列中的元素作为列表元素
'''
print(list(100))数字不行
print(list(range(1,10)))#[1, 2, 3, 4, 5, 6, 7, 8, 9]
'''
注意:1.列表里面的数据类型要一样
2.数据类型要支持比较运算符
max(列表)----获取列表中最大值
min(列表)----获取列表中最小值
'''