一、列表元素的增删改
1. 增 - 在列表中添加元素
- append
列表.append(元素) - 在列表的最后添加指定的元素(不会产生新的数据,直接修改的原列表)
names = ['路飞','佐罗','罗宾']
names.append('娜美')
print(names)
names.append('乔巴')
print(names)
- insert
names.insert(1,'乌索普')
print(names)
names.insert(0,'山治')
print(names)
列表.insert(下标,元素) - 在列表指定下标前插入指定的元素
- extend
sports = ['篮球','足球','乒乓球']
sports.extend(['羽毛球','排球'])
print(sports)
列表.extend(序列) - 将序列中所有的元素添加到列表的最后
练习:给一个分数列表:[90, 56, 78, 89, 45, 60, 32, 100], 在这个列表中所有不及格的分数后加上元素:0
scores = [90,85,64,25,45,36,59]
scores1 = scores[:]
count = 1
for i , j in enumerate(scores):
if j < 60 :
scores1.insert(i+count,0)
count += 1
print(scores1)
2. 删 - 删除元素
- del
del 列表[下标] - 删除列表中的指定下标对应的元素
names = ['射手','坦克','上单','吕荣林']
names.remove('上单')
print(names)
# names.remove('中单') #ValueError: list.remove(x): x not in list
- remove
列表.remove(元素) - 删除列表中指定元素(如果元素不存在会报错;如果元素有多个,只删除最前面的那一个)
names = ['射手','坦克','上单','吕荣林']
names.remove('上单')
print(names)
# names.remove('中单') #ValueError: list.remove(x): x not in list
- pop
列表.pop() - 取出列表中的最后一个元素,返回的数据就是取出来的元素
列表.pop(下标) - 取出列表中指定下标对应元素
names = ['射手','坦克','上单','吕荣林']
del_names = names.pop(2)
print(names,del_names)
- clear
列表.clear() - 删除列表中的所有的元素
names = ['射手','坦克','上单','吕荣林']
names.clear()
print(names)
练习:删除scores中所有低于60的分数
scores= [90, 56, 40, 67, 92, 89, 69]
scores1=scores[:]
for i in scores1:
if i<60:
scores.remove(i)
print(scores)
3. 改 - 修改列表元素的值
列表[下标] = 新元素 - 将列表指定下标对应的元素修改成新的元素
movies = ['恐怖游轮','致命ID','忍者神龟','赌神','雪国列车']
movies[-2] = '盗梦空间'
print(movies)
练习:将scores中低于60分的成绩全部置零: [90, 0, 0, 67, 92, 89, 0]
scores= [90, 0, 0, 67, 92, 89, 0]
for i,score in enumerate(scores):
if score<60:
scores[i] = 0
print(scores)
二、列表的相关操作
1. 列表的加法运算和乘法运算
列表1+列表2 - 将列表1和列表2合并产生一个新列表
列表 * N / N * 列表 - 列表中的元素重复N次产生一个新的列表(N是正整数)
list1 = [10,12]+[10 , 2]
print(list1)
list2 = [1,2,3]
print(list2*3)
加法和乘法运算不会修改原列表
list3 = ['hello','how']
list4 = list3+['are']
print(list3)
print(list4)
2.比较运算
- == !=
print([1,2,3] == [1, 2, 3])
- < > >= <=
两个列表比价大小,比较的是第一对不想动的元素的大小(从前往后下标相同的元素为一对)
print([100, 200, 300, 400] > [1000, 20])
3. in 和 not in
元素 in 列表 - 判断指定元素是否在指定列表中
元素 not in 列表 - 判断指定元素是否不在指定列表中
names = ['李白','杜甫','白居易']
print('李煜' in names)
练习:获取同时选了两门的学生名字
pythons = ['小明','张三','小花','Bob','Tom']
javas = ['李四','小明','王五','Bob','Jim']
for python in pythons:
for java in javas:
if python == java:
print(python, end=' ')
for python in pythons:
if python in javas:
print(python, end=' ')
4. max/min/sorted/sum/list/len
- len(序列) - 获取序列中元素的个数
pythons = ['小明','张三','小花','Bob','Tom']
print(len(pythons))
- max(序列)/min(序列) - 求序列中元素的最大值/最小值
scores = [85, 96, 98, 20, 36, 77, 56]
print(max(scores))
print(min(scores))
- sorted(序列) - 对序列的元素从小到大排序,产生一个新的列表(不会修改原数据)
new_scores = sorted(scores)
print(scores)
print(new_scores)
- sorted(序列,reverse=True) - 对序列的元素从大到小排序,产生一个新的列表(不会修改原数据)
new_scores = sorted(scores,reverse=True)
print(new_scores)
new_scores = sorted(scores,reverse=False)
print(new_scores)
- sum(序列) - 求序列中所有元素的和
scores = [85, 96, 98, 20, 36, 77, 56]
sum1 = sum(scores)
print(sum1)
- list(序列) - 将制定的序列转换成列表
1)所有的序列都可以转换成列表
2)将序列中的元素变成列表的元素
print(list('adadadasdas'))
print(list(range(50)))
三、列表的相关方法
1.列表.copy() - 复制原列表,产生一个一模一样的新列表(相当于 列表[:];浅拷贝)
nums = [10, 20, 30]
nums1 = nums
nums2 = nums.copy()
print(nums1,nums2)
nums.remove(20)
print('nums1:',nums1)
print('nums2:',nums2)
2.列表.count(元素) - 统计列表中指定元素的个数
foods = [1, 2, 3, 4, 5, 6, 1, 8, 5, 3, 3]
print(foods.count(1))
print(foods.count(0))
3.列表.index(元素) - 获取指定元素的下标(如果有多个返回第一个元素的下标;如果元素不存在就会报错)
foods = [1, 2, 3, 4, 5, 6, 1, 8, 5, 3, 3]
print(foods.index(1))
# print(foods.index(9)) # ValueError: 9 is not in list
4.列表.reverse() - 将指定列表逆序
foods = [1, 2, 3, 4, 5, 6, 1, 8, 5, 3, 3]
foods.reverse()
print(foods)
5.列表.sort() - 将列表中的元素从小到大排序(不会产生新的列表)
列表.sort(reverse=True) - 将列表的元素从大到小排序(不会产生新的列表)
ages = [56, 89, 56, 46, 18, 66, 20]
ages.sort()
print(ages)
ages.sort(reverse=True)
print(ages)