列表——python

一、列表元素的增删改

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值