02learn_list
1. 什么是列表(list)
列表是python提供的容器型数据类型。可变并且有序的
可变 - 列表中的每个元素的值可变,列表的长度可变,列表中元素的顺序可变 (支持增删改查)
有序 - 每个元素可以通过下标来确定位置
列表的字面量:通过[]括起来,里面有多个元素,每个元素用逗号隔开;
[1,2,3]
[10,'abc',True]
num = 100; [num,200]
[] -- 空列表
注意:列表元素的类型可以是任何python支持的数据类型;并且同一列表中不同元素的类型可以不一样
任何类型的数据都可以作为列表的元素
list1 = [90, 10.34, 'abc', True, [1, 2, 3], {'a': 10}, lambda x : 2*x ]
print(len(list1))
list2 = [
90,
10.34,
'hello',
{'name': 'xiaoming'}
]
a = 10
list3 = [a, 20]
print(list3)
2.获取列表元素(和字符串获取字符的语法一样)
"""
a. 获取单个元素
列表[下标] - 获取列表中指定下标的元素
list1 = [1, 20, 40, 'abc']
print(list1[0], list1[-1])
b. 获取部分元素(切片) - 结果是列表
列表[开始下标:结束下标:步长]
注意:取不到的时候,结果是空列表
movies = ['毒液', '功夫熊猫', '肖申克的救赎', '这个杀手不太冷', '拯救大兵瑞恩']
print(movies[1:3]) # [ '功夫熊猫', '肖申克的救赎']
print(movies[1:5:2]) # ['功夫熊猫', '这个杀手不太冷']
print(movies[3:-3:-1]) # [ '这个杀手不太冷']
print(movies[3:-3:1]) # [] --> 取不到,在列表里是空列表
print(movies[:2]) # ['毒液', '功夫熊猫']
print(movies[2:]) # ['肖申克的救赎', '这个杀手不太冷', '拯救大兵瑞恩']
print(moveis[::-1]) # 列表中的元素倒序
c. 一个一个的取出所有元素(遍历)
可以使用for循环直接遍历列表拿到每个元素;(操作元素的时候和下标无关)
可以通过遍历列表元素对应的下标来遍历列表元素;(操作元素的时候和下标有关)
直接遍历
for item in movies:
print(item)
通过遍历下标遍历
for index in range(len(movies)):
print('下标:',index)
print(movies[index])
示例:
练习:统计一个班的学生的成绩[90, 80,80, 70, 98, 67],存到一个列表中。求整个班的学生的平均成绩
打印出平均成绩
scores = [90, 80,80, 70, 98, 67]
num = len(scores)
total = 0
for score in scores:
total += score
print(total/num)
030addDelUpdate
1.增(添加列表元素)
a. append
列表.append(元素) - 在指定的列表的最后添加指定的元素(注意:整个操作不会产生新的列表)
b. insert
列表.insert(下标,元素) - 在指定的下标前插入指定的元素
2. 删除元素
a. del
del 列表[下标] - 删除列表中指定下标对应的元素
注意:del是python中的关键字,可以用它删除任何数据 这儿的下标不能越界
b. remove
列表.remove(元素) - 删除列表中第一个指定元素
注意:被删除的元素在列表中必须是存在的
c.pop
列表.pop() - 将列表中最后一个元素从列表中取出,会返回取出来的元素
列表.pop(下标) - 将列表中指定下标对应的元素从列表中取出,会返回取出来的元素
坑一:遍历列表删除部分元素,删不全! --- 遍历的时候对原列表切片
示例:
删除列表中小于18的元素
ages = [12, 13, 20, 18, 30]
temp = ages[:] # 这步是重点
for age in temp:
if age < 18:
ages.remove(age)
print(ages)
上一段代码简写:
ages = [12, 13, 20, 18, 30]
for age in ages[:]: # 这步是重点
if age < 18:
ages.remove(age)
print(ages)
坑二:通过下标遍历列表,删除元素的时候,下标越界和元素获取不全
解决办法:下标对应的元素需要删除,下标值不动;不会删除下标加1
示例:
将小于18岁的拎出来,存到一个新的列表中
ages = [12, 13, 20, 18, 30, 10]
new_ages = [] # 保存被删除的元素
index = 0
while index < len(ages):
age = ages[index]
if age < 18:
del_item = ages.pop(index)
new_ages.append(del_item)
else:
index += 1 # 不需要删除的时候下标才增加
print(ages, new_ages)
3. 改(修改元素的值)
列表[下标] = 新值 -- 修改列表中指定下标对应的值
示例:
练习:有一个列表中保存的是学生的成绩,要求将列表中成绩小于60分的改成'下一个班见',
并且统计下一个班见的学生的个数
scores = [90, 78, 50, 77, 23, 82, 45]
count = 0
for index in range(len(scores)):
if scores[index] < 60:
scores[index] = '下一个班见'
count += 1
print(scores)
print(count)
04listOperation
1.相关运算:
a. 数学运算:+, *
列表1 + 列表2 - 将两个列表中的元素合并在一起产生一个新的列表
列表*N - 列表中的元素重复N次,产生一个新的列表
b. 支持比较运算
比较大小的原理和字符串类似
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
print(list1 + list2, list1)
print(list1 * 2)
2. in / not in
元素 in 列表 - 判断列表中是否存在指定的元素
print([1, 2] in [1, 2, 3]) # False
print([1, 2] in [[1, 2], 33, 'afs']) #True
print('abc' in [10, 'abc', True]) #True
3. len
len(列表) - 获取列表中元素的个数
4. list
list(数据) - 将其他类型数据转换成列表;只有序列才可以转换成列表,并且所有的序列都能转换成列表;
转换的时候就是讲序列中所有的元素转换成列表的元素
注意: 不能用python给我们提供的类型的名字来命名,否则会有隐患
list1 = list('hello')
print(list1)
list2 = list(range(11, 21))
print(list2)
5.序列其他方法
max(序列) - 获取序列中值最大的元素
min(序列) - 获取序列中值最小的元素
sum(序列) - 求序列中所有元素的和
注意:以上三个方法,要求序列中的元素类型必须一致,并且这个类型支持比较运算和加法运算(一般数字序列用)
print(max([19, 89, 999, 2, 0.2]))
print(min([19, 89, 999, 2, 0.2]))
print(sum([19, 89, 999, 2, 0.2]))
网友评论