一 列表的增删改
1.1 增 - 在列表中添加元素
- append
语法:
列表.append(元素) - 在立列表最后添加指定的元素(不会产生新的数据,是直接修改的原列表)
例如:
names = [' 路飞', '佐罗', '罗宾']
names.append('娜美')
print(names)
- insert
语法:
列表.insert(下标,元素) - 在指定下标前插入指定元素
例如:
names.insert(1, '乌索普')
print(names)
names.insert(0, '山治')
print(names)
- extend
语法:
列表.extend(序列) - 将序列中所有的元素添加到列表的最后
例如:
sports = ['篮球', '足球', '乒乓球']
sports.extend(['羽毛球', '排球'])
print(sports)
练习:给一个分数列表:[90, 56, 78, 89, 45,32, 100], 在这个列表中所有不及格的分数后加上元素:0
scores = [90, 56, 78, 89, 45, 32, 10]
new_scores = scores[:] # - 把scores的值赋给new_scores,其中new_scores是新的变量,即重新开辟的空间
index = 0
for item in new_scores:
if item < 60:
scores.insert(index + 1, 0)
index += 1
index += 1
print(scores)
1.2 删除列表中的元素
- del
语法:
del 列表[下标] - 删除列表中指定下标对应的元素(下标不能越界)
例如:
names = ['后裔', '王昭君', '伽罗', '百里守约', '甄姬']
del names[2]
print(names)
- remove
语法:
列表.remove(元素) - 删除列表中指定元素(①如果元素不存在会报错!②如果列表中有多个相同元素,只删除最前面的那个)
names = ['后裔', '王昭君', '伽罗', '百里守约', '甄姬']
names.remove('伽罗')
print(names)
- pop
语法:
列表.pop() - 取出列表中的最后一个元素
列表.pop(下标) - 取出列表中指定下标对应的元素
例如:
names = ['后裔', '王昭君', '伽罗', '百里守约', '甄姬']
name1 = names.pop()
print(name1)
- clear
语法:
列表.clear() - 删除列表中所有的元素
例如:
names = ['后裔', '王昭君', '伽罗', '百里守约', '甄姬']
names.clear() # 效率比直接赋值为[]高
print(names)
- 练习:删除scores中所有低于60的分数 scores = [90, 56, 78, 89, 45, 32, 10]
scores = [90, 56, 40, 67, 92, 89, 59]
new_scores = scores[:]
index = 0
for item in new_scores:
if item < 60:
scores.remove(item)
# index -= 1
# index += 1
print(scores)
1.3 改 - 修改列表元素的值
语法:
列表[下标] = 新元素 - 将列表指定下标对应的元素写改成新的元素
例如:
movies = ['恐怖游轮', '致命ID', '忍者神龟', '赌神', '雪国列车']
movies[3] = '盗梦空间'
print(movies)
- 练习:将scores中低于60的全部置零
scores = [90, 56, 40, 67, 92, 89, 59]
for index, item in enumerate(scores):
if item < 60:
scores[index] = 0
print(scores)
二.列表的加法运算和乘法运算
加法和乘法运算都不会改变原列表的值
2.1 加法运算
语法:
列表1 + 列表2 - 在列表1后面添加列表2的内容,产生新的列表
例如:
list1 = [10, 20, 30] + [1, 2, 3]
print(list1)
2.2 乘法运算
语法:
列表 * N / N * 列表 - 列表中的元素重复N次产生一个新的列表(N为正整数)
例如:
list2 = [1, 2, 3] * 3
print(list2)
2.3 比较运算
1.== !=
不通的顺序是不同的列表
2. _ >, <, >=, <=
两个列表比较大小,比较的是第一对不相等的元素的大小(从前往后下标相同的为一对)
例如:
print([100, 200, 300, 400] > [200, 100]) # False
- in 和 not in
语法:
元素 in 列表 - 判断指定元素是否在指定的列表中
元素 not in 列表 - 判断指定元素是否不在指定的列表中
例如:
names = ['李白', '杜甫', '白居易', '辛弃疾']
print('陶渊明' in names)
练习:获取同时选了两门课的学生的姓名
python = [‘小明’, ‘张三’, ‘小法’, ‘小鱼’, ‘小炮’]
javas = [‘李四’, ‘小鱼’, ‘小法’, ‘王五’, ‘jim’]
方法一:
for name in python:
for name2 in javas:
if name == name2:
print(name2)
方法二:
for name3 in python:
if name3 in javas:
print(name3)
2.4 系统函数:max/min/sorted/sum/len/list
- len(序列) - 获取序列中元素的个数
python = ['小明', '张三', '小法', '小鱼', '小炮']
print(len(python))
- max(序列)/min(序列) - 求序列中元素的最大值/最小值
scores = [89, 20, 23, 6, 36, 69]
print(max(scores))
print(min(scores))
- sorted(序列) - 将序列中的元素从小到大排序,产生一个新的列表。(不会修改原序列)
- sorted(序列,reverse=True) - 将序列中的元素从大到小排序,产生一个新的列表。(不会修改原序列)
new_scores = sorted(scores)
print(scores)
print(new_scores)
new_scores1 = sorted(sorted(scores), reverse=True)
print(new_scores1)
- sum(序列) - 求序列中所有元素的和(序列中的元素必须是数字)
sum1 = sum(scores)
print(sum1)
- list(序列) - 将指定的序列转换成列表(①所有的序列都可以转换成列表,②将序列中的元素变成列表中的元素
print(list('abc'))
print(list(range(4)))
- 列表.copy() - 复制原列表产生一个一摸一样的新列表(相当于 列表[:])
nums = [10, 20, 20]
nums1 = nums.copy()
print(nums1)
- 列表.count(元素) - 统计列表中指定元素的个数
foods = ['大闸蟹', '龙虾', '花甲', '包子', '油条', '龙虾', '包子']
num = foods.count('龙虾')
print(num)
print(foods.count('大虾'))
- 列表.index(元素) - 获取指定元素的下标(①如果有多个相同元素只返回第一个元素的下标;②如果元素不在列表中会报错)
print(foods.index('花甲'))
- 列表.reverse() - 将指定的列表逆序
foods.reverse()
print(foods)
- 列表.sort() - 将列表中的元素从小到大排序(不会产生新的列表)
- 列表.sort(reverse = True) - 将列表中的元素从大到小排序(不会产生新的列表)
ages = [25, 23, 42, 42, 44, 67]
ages.sort()
print(ages)
ages.sort(reverse=True)
print(ages)