列表和元组
一.列表元素的增删改
1.增 - 在列表中添加元素
- 列表.append(元素) - 在列表的最后添加指定的元素(不会产生新的元素,只直接修改原列表)
names = ['路飞', '佐罗', '罗宾']
names.append('娜美')
print(names) # # ['路飞', '佐罗', '罗宾', '娜美']
names.append('乔巴')
print(names) # ['路飞', '佐罗', '罗宾', '娜美', '乔巴']
- 列表.insert(下标, 元素) - 在列表指定下标前插入指定的元素
names.insert(1, '乌索普')
print(names) # ['路飞', '乌索普', '佐罗', '罗宾', '娜美', '乔巴']
names.insert(0, '山治')
print(names) # ['山治', '路飞', '乌索普', '佐罗', '罗宾', '娜美', '乔巴']
-列表.extend(序列) - 将序列中所有的元素添加到列表的最后
sports = ['篮球', '足球', '乒乓球']
sports.extend(['羽毛球', '排球'])
print(sports) # ['篮球', '足球', '乒乓球', '羽毛球', '排球']
2.删除 - 删除元素
- del 列表[下标] - 删除列表中指定下标对应的元素(下标不能越界)
names = ['后裔', '王昭君', '伽罗', '败类守约', '甄姬']
del names[2]
print(names) # ['后裔', '王昭君', '败类守约', '甄姬']
del names[-3]
print(names) # ['后裔', '败类守约', '甄姬']
- 列表.remove(元素) - 删除列表中指定元素(如果元素不存在会报错!;如果元素有多个只删除最前面的那一个)
names = ['后裔', '王昭君', '伽罗', '败类守约', '甄姬']
names.remove('伽罗')
print(names) # ['后裔', '王昭君', '败类守约', '甄姬
- 列表.pop() - 取出列表中的最后一个元素,返回的数据就是取出来的元素;列表.pop(下标) - 取出列表中指定下标对应的元素。
- 列表.clear() - 删除列表中所有的元素
names = ['后裔', '王昭君', '伽罗', '败类守约', '甄姬']
names.clear() # 效率比直接赋值为[]高
print(names) # []
python中用一个变量直接给另一个变量赋值,赋的是变量中保存的地址。
3.改 - 修改列表元素的值
列表[下标] = 新元素 - 将列表指定下标对应的元素修改成新的元素。
movies = ['恐怖游轮', '致命ID', '忍者神龟', '赌圣', '雪国列车']
movies[-2] = '盗梦空间'
print(movies) #['恐怖游轮', '致命ID', '忍者神龟', '盗梦空间', '雪国列车']
二.列表相关操作
1.列表的加法运算和乘法运算
列表1 + 列表2 - 将列表1和列表2合并产生一个新元素;
列表1 * N/N * 列表 - 列表中的元素重复N次产生一个新的列表(N是正整数)。
加法和乘法运算不会修改原列表。
2.比较运算
- == , !=
print([10, 20, 30] == [20, 10, 30]) # False
print([10, 20, 30] == [10, 20, 30]) # True
- <, >, <=, >=
两个列表比较大小,比较的是第一对不相等的元素的大小(从前往后下标相同的元素为一对)。
print([100, 200, 300, 400] > [200, 100]) # False
print([100, 200, 300, 400] > [100, 50]) # True
print([1, 2, 3, 4] > [1, 2, 3]) # True
3.in 和 not in
元素 in 列表 - 判断指定元素是否在指定列表中
元素 not in 列表 - 判断指定元素是否不在指定列表中
4.系统函数:max/min/len/sorted/sum/list
- len(序列) - 获取序列中元素的个数
pythons = ['小明', '张三', '小花', 'Bob', 'Tom']
print(len(pythons)) # 5
- nax(序列)/min(序列) - 求序列中元素的最大值/最小值
scores = [89, 78, 56, 90, 87, 96, 45, 67]
print(max(scores)) # 96
print(min(scores)) # 45
- sorted(序列) - 对序列中的元素从小到大排序,产生一个新的列表。(不会修改原序列)
new_scores = sorted(scores)
print(scores) # [89, 78, 56, 90, 87, 96, 45, 67]
print(new_scores) # [45, 56, 67, 78, 87, 89, 90, 96]
- sorted(序列, reverse=True) - 对序列中的元素从小到大排序,产生一个新的列表。(不会修改原列表)
new_scores = sorted(scores, reverse=True)
print(new_scores) # [96, 90, 89, 87, 78, 67, 56, 45]
- sum(序列) - 求序列中所有元素的和(序列中的元素必须都是数字)
sum1 = sum(scores)
print('和', sum1) # 和 608
print('平均分:', sum(scores)/len(scores)) # 平均分: 76.0
print(sum(range(101))) # 5050
- list(序列) - 将指定的序列转换成列表
所有的序列都可以转换成列表;将序列中的元素变成列表中的元素。
print(list('abc')) # ['a', 'b', 'c']
print(list(range(4))) # [0, 1, 2, 3]
这里是引用
四.列表相关的方法
1.列表.copy()
复制原列表产生一个一模一样的新列表(相当于 列表[:];浅拷贝)。
nums = [10, 20, 30]
scores = nums.copy()
print(scores) # [10, 20, 30]
2.列表.count(元素)
统计列表中指定元素的个数
foods = ['大闸蟹', '小龙虾', '花甲', '包子', '油条', '小龙虾', '包子', '小龙虾']
print(foods.count('小龙虾')) # 3
print(foods.count('包子')) # 2
print(foods.count('大虾')) # 0
3.列表.index(元素)
获取指定元素的下标(如果元素有多个返回第一个元素的下标;如果元素不存在会报错)。
foods = ['大闸蟹', '小龙虾', '花甲', '包子', '油条', '小龙虾', '包子', '小龙虾']
print(foods.index('花甲')) # 2
print(foods.index('大闸蟹')) # 0
print(foods.index('小龙虾')) # 1
4.列表.reverse()
将指定列表逆序。
foods = ['大闸蟹', '小龙虾', '花甲', '包子', '油条', '小龙虾', '包子', '小龙虾']
foods.reverse()
print(foods) # ['小龙虾', '包子', '小龙虾', '油条', '包子', '花甲', '小龙虾', '大闸蟹']
5. 列表.sort()
将列表中的元素从小到大排序(不会产生新的列表);
列表.sort(reverse=True) - 将列表中的元素从大到小排序(不会产生新的列表)。
ages = [56, 78, 12, 54, 13, 25]
ages.sort()
print(ages) # [12, 13, 25, 54, 56, 78]
ages = [56, 78, 12, 54, 13, 25]
ages.sort(reverse=True)
print(ages) # [78, 56, 54, 25, 13, 12]
原组:元组就是不可变的列表:列表中除了增删改的操作,其他元组都支持.
元组(tuple):(元素1, 元素2, 元素3, …)