Day5 List操作

Day5 List操作

1. 增加

  1. 列表.append(元素) - 在列表的最后添加指定元素

    tvs = ['回家的诱惑','非自然死亡','我的兄弟叫顺溜','琅琊榜','甄嬛传','亮剑','请回答1988']
    print(tvs)
    tvs.append('生活大爆炸')
    print(tvs)
    

    练习:用一个列表保存100以内所有能被3整除的数

    num = []
    for i in range(0,101,3):
        num.append(i)
    print(num)
    
  2. 列表.insert(下标,元素) - 在列表的指定下标所在的位置前插入指定元素

    tvs.insert(1,'人民的名义')
    print(tvs)
    

    练习:

    scores = [98, 93, 91, 87, 83, 80, 77, 70, 65, 62, 56]
    num = int(input('请输入成绩:'))
    for i in range(len(scores)):
        if num >= scores[i]:
            scores.insert(i,num)
            break
    else:
        scores.append(num)
    print(scores)
    

2. 删除

  1. del 列表[下标] - 删除列表中指定下标对应的元素

    tvs = ['回家的诱惑','非自然死亡','我的兄弟叫顺溜','琅琊榜','甄嬛传','亮剑','请回答1988']
    del tvs[1]
    print(tvs)     #['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
    
    del tvs[-1]
    print(tvs)     #['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑']
    
  2. 列表.remove(元素) - 删除列表中指定元素

    • 如果需要删除的元素在列表中有多个,只删最前面那个
    • 如果需要删除的元素不存在,程序会报错
tvs = ['回家的诱惑','非自然死亡','琅琊榜','我的兄弟叫顺溜','琅琊榜','甄嬛传','亮剑','琅琊榜','请回答1988']
print(tvs)      #['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
tvs.remove('非自然死亡')
print(tvs)      #['回家的诱惑', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']

# tvs.remove('行尸走肉')
print(tvs)   #list.remove(x): x not in list

练习:删除tvs中最后一个’琅琊榜’

for i in range(-1,-len(tvs),-1):
    if tvs[i] == '琅琊榜':
        del tvs[i]
        break
print(tvs)
+ 列表.pop()  -   取出列表最后一个元素,并且返回
+ 列表.pop(下标)    -   取出列表中指定下标对应的元素,并且返回

```python
print(tvs)            #['回家的诱惑', '琅琊榜', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回答1988']
print(tvs.pop())        #请回答1988
print(tvs)      #['回家的诱惑', '琅琊榜', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑']
tvs.pop(1)
print(tvs)
```

3. 改:

  • list[下标] = 新值 - 修改列表中指定下标对应的元素

    tvs = ['回家的诱惑','非自然死亡','琅琊榜','我的兄弟叫顺溜','琅琊榜','甄嬛传','亮剑','琅琊榜','请回答1988']
    tvs[0] = '行尸走肉'
    print(tvs)
    

    练习:删除scores中所有小于60分的成绩

    scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30]
    while True:
        for i in range(len(scores)):
            if scores[i] < 60:
                del scores[i]
                break
        else:
            break
    print(scores)
    
    # 解决坑一
    # 在删除之前对原列表中数据进行备份,遍历备份数据,删除原数据
    temp = scores[:]  #scores[:]:创建一个新的列表,新列表中的元素和scores一模一样
    for s in temp:
        if s < 60:
            scores.remove(s)
    print(scores)
    
    # 补充:如果用一个列表变量给另外一个变量赋值,赋的是原变量中数据的地址
    a = [10, 20, 30]
    b = a
    c = a[:]
    a.append(100)
    print(b)    #[10, 20, 30, 100]
    print(c)    #[10, 20, 30]
    
    坑二
    scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30]
    for index in range(len(scores)):
        if scores[index] < 60:
            del  scores[index]
    print(scores)
    
    scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30]
    index = 0
    while True:
        if scores[index] >= 60:
            index += 1
        else:
            del scores[index]
        if index >= len(scores):
            break
    print(scores)
    
    
    # 方法三
    scores = [87, 34, 50, 23, 78, 99, 45, 23, 76, 89, 30]
    new_scores = []
    for x in scores:
        if x >= 60:
            new_scores.append(x)
    print(new_scores)
    

4.相关操作

  1. 加法和乘法运算

    • 列表1 + 列表2 - 将两个列表合并产生一个新的列表

      list1 = [10, 20, 30] + ['abc' , 123]
      print(list1)        #[10, 20, 30, 'abc', 123]
      
    • 列表 * N - 列表中的元素重复N次产生一个新的列表

      list2 = [10, 20, 30] * 3
      print(list2)        #[10, 20, 30, 10, 20, 30, 10, 20, 30]
      
  2. in 和 not in

    • 元素 in 列表 - 判断列表中是否存在指定元素

    • 元素 not in 列表 - 判断列表中是否不存在指定元素

      print(10 in [10, 20, 30])       #True
      print([10, 20] in [10, 20, 30])     #False
      print([10, 20] in [[10, 20], 30])       #True
      
      num = 9
      if num == 10 or num == 20 or num == 30:
          print('是')
      
      if num in [10, 20, 30]:
          print('是')
      
作业

1.已知一个数字列表,求列表中心元素。

list1 = []
if len(list1) // 2:
    print(list1[len(list1)//2])
else:
    print(list1[len(list1)//2-1],list1[len(list1)//2])

2.已知一个数字列表,求所有元素和。

sum = 0
list1=[]
for i in range(len(list1)):
    sum += list1[i]
print('列表元素和:',sum)

3.已知一个数字列表,输出所有奇数下标元素。

index = 1
list1 = []
while True:
    print(list1[index])
    index += 2
    if index > len(list1):
        break

4.已知一个数字列表,输出所有元素中,值为奇数的元素。

list1 = []
for value in list1:
    if value % 2: 
        print(value)

5.已知一个数字列表,将所有元素乘二。

例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]

list1 = []
list2 = []
for value in list1:
    list2.append(value*2)
print(list2)

6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的

例如:names = [‘张三’, ‘李四’, ‘大黄’, ‘大黄’, ‘张三’, ‘张三’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]

list1 =['张三', '李四', '大黄', '大黄', '张三', '张三', '张三']
list2 = []
for i in range(len(list1)):
    if list1[i] not in list2:
            list2.append(list1[i])
print(list2)

7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)

score = [14,58,42,13,69,23]
for x in range(len(score)):
    for j in range(x,len(score)):
        if score[x] > score[j]:
            score[x],score[j] = score[j],score[x]
del score[0]
del score[len(score)-1]
print(score)

8.有两个列表A和B,使用列表C来获取两个列表中公共的元素

例如: A = [1, ‘a’, 4, 90] B = [‘a’, 8, ‘j’, 1] --> C = [1, ‘a’]

A = [1,5,7,9,6,3,5]
B = [2,4,6,9,3,]
C = []
if len(A) > len(B):
    for i in range(len(A)):
        if A[i] in B:
            C.append(A[i])
else:
    for i in range(len(B)):
        if B[i] in A:
            C.append(B[i])
print(C)

9.*有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)

例如: nums = [19, 89, 90, 600, 1] —> 600

num=[15,10,56,23,34,71,41]
for i in range(len(num)):
    for j in range(i+1,len(num)):
        if num[i] < num[j]:
            num[i],num[j] = num[j],num[i]
print(num[0])

10.*获取列表中出现次数最多的元素

例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3] —> 打印:3

counts =[]
count = 0
nums = [1, 2, 3, 1, 4, 2, 1, 3, 7, 3, 3]
for x in range(len(nums)):
    for i in range(0,len(nums)):
        if nums[i] == nums[x]:
            count += 1
    counts.append(count)
    count = 0
print('列表中出现次数最多的元素:',nums[counts.index(max(counts))])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值