Python Day4 homework - 列表,元组

  1. 列表操作练习
    列表lst 内容如下
    lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
    请写程序完成下列操作:
    1 . 在列表的末尾增加元素15
    2 . 在列表的中间位置插入元素20
    3 . 将列表[2, 5, 6]合并到lst中
    4 . 移除列表中索引为3的元素
    5 . 翻转列表里的所有元素
    6 . 对列表里的元素进行排序,从小到大一次,从大到小一次
lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]

# 在列表的末尾增加元素15
lst.append(15)
print(lst) # [2, 5, 6, 7, 8, 9, 2, 9, 9, 15]

# 在列表的中间位置插入元素20
lst.insert(5, 20)
print(lst) # [2, 5, 6, 7, 8, 20, 9, 2, 9, 9, 15]

# 将列表[2, 5, 6]合并到lst中
lst.extend([2,5,6])
print(lst) # [2, 5, 6, 7, 8, 20, 9, 2, 9, 9, 15, 2, 5, 6]

# 4 . 移除列表中索引为3的元素
lst.pop(3)
print(lst) # [2, 5, 6, 8, 20, 9, 2, 9, 9, 15, 2, 5, 6]

# 5 . 翻转列表里的所有元素
lst.reverse()
print(lst) # [6, 5, 2, 15, 9, 9, 2, 9, 20, 8, 6, 5, 2]

#6 . 对列表里的元素进行排序,从小到大一次,从大到小一次
lst.sort() #从小到大,升序
print(lst) # [2, 2, 2, 5, 5, 6, 6, 8, 9, 9, 9, 15, 20]

lst.sort(reverse = True) #从大到小,降序
print(lst) # [20, 15, 9, 9, 9, 8, 6, 6, 5, 5, 2, 2, 2]

2 . 修改列表
问题描述:
st = [1, [4, 6], True]
请将列表里所有数字修改成原来的两倍

st = [1, [4, 6], True]
st[0] = st[0] * 2 
st[1][0] = st[1][0] * 2
st[1][1] = st[1][1] * 2
print(st) # [2, [8, 12], True]

3 . leetcode 852题 山脉数组的峰顶索引
如果一个数组k符合下面两个属性,则称之为山脉数组
数组的长度大于等于3
存在 i i i, i > 0 i>0 i>0 i < l e n ( k ) − 1 i<len(k)-1 i<len(k)1,使得 k [ 0 ] < k [ 1 ] < . . . < k [ i − 1 ] < k [ j ] > k [ i + 1 ] . . . > k [ l e n ( k ) − 1 ] k[0]<k[1]<...<k[i-1]<k[j]>k[i+1]...>k[len(k)-1] k[0]<k[1]<...<k[i1]<k[j]>k[i+1]...>k[len(k)1]
这个 i i i就是顶峰索引
现在,给定一个山脉数组,求顶峰索引
示例:
输入: [1, 3, 4, 5, 3]
输出: True
输入:[1, 2, 4, 6, 4, 5]
输出:False

from typing import List
class Solution:
    def peakIndexInMountainArray(self, A: List[int]) -> int:
        flag ="True"   #初始默认是山脉数组
        if len(A) < 3: #如果数组长度<3,则不是山脉数组
            flag = "False"
        else:
            MaxValue = max(A)   #找到数组的最大值
            MaxIndex = A.index(MaxValue) #找到最大值的index
            for i in range(0,MaxIndex -1):  #最大值左边的数,如果存在相邻左边>=右边的数,则不是山脉数组
                if A[i]>=A[i+1]:
                    flag = "False"
                    break
            for j in range(MaxIndex,len(A) -1): #最大值右边的数,如果存在相邻左边<=右边的数,则不是山脉数组
                if A[j]<=A[j+1]:
                    flag = "False"
                    break
        return(flag)   #排除掉上面不是山脉数组的情况,剩下的情况就是山脉数组
                   
                
test = Solution()
flag = test.peakIndexInMountainArray([1, 3, 4, 5, 3])
#flag = test.peakIndexInMountainArray([1, 2, 4, 6, 4, 5])
print(flag)
  1. 元组概念
    写出下面代码的执行结果和最终结果的类型
a= (1, 2)*2
b= (1, )*2
c= (1)*2

print(a,type(a)) # (1, 2, 1, 2) <class 'tuple'>
print(b,type(b)) # (1, 2, 1, 2) <class 'tuple'>
print(c,type(c)) # 2 <class 'int'>
  1. 拆包过程是什么?
    答:按照元组里的元组结构来定义变量
a, b = 1, 2 

上述过程属于拆包吗?
答:有点像哎,定义元组也可以不加括号

可迭代对象拆包时,怎么赋值给占位符?

li = list(range(10))
first,*mid,last = li
print(first) # 0
print(mid) # [1, 2, 3, 4, 5, 6, 7, 8]
print(last) #9

猜你喜欢

转载自blog.csdn.net/weixin_48760912/article/details/114295613