Python_Task04:列表、元组和字符串
1、列表操作练习
列表lst 内容如下
lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
请写程序完成下列操作:
- 在列表的末尾增加元素15
- 在列表的中间位置插入元素20
- 将列表[2, 5, 6]合并到lst中
- 移除列表中索引为3的元素
- 翻转列表里的所有元素
- 对列表里的元素进行排序,从小到大一次,从大到小一次
lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
lst.append(15)
print(lst)
lst.insert(5,20)
print(lst)
lst.extend([2,5,6])
print(lst)
del lst[3]#删除索引为3的元素
print(lst)
lst.reverse()#翻转
print(lst)
lst.sort()#升序排列
print(lst)
lst.sort(reverse=True)#降序排列
print(lst)
2、修改列表
问题描述:
lst = [1, [4, 6], True]
请将列表里所有数字修改成原来的两倍
lst = [1, [4, 6], True]
lst[0]*=2
lst[1][0]*=2
lst[1][1]*=2
print(lst)
lst = [2, [8, 12], True]
3、leetcode 852题 山脉数组的峰顶索引
如果一个数组k符合下面两个属性,则称之为山脉数组
数组的长度大于等于3
存在i ii,i ii >0 且i < len ( k ) − 1 i<\operatorname{len}(k)-1i<len(k)−1, 使得k [ 0 ] < k [ 1 ] < … < k [ i − 1 ] < k [ i ] > k [ i + 1 ] … > k [ len ( k ) − 1 ] \mathrm{k}[0]<\mathrm{k}[1]<\ldots<\mathrm{k}[\mathrm{i}-1]<\mathrm{k}[\mathrm{i}]>\mathrm{k}[\mathrm{i}+1] \ldots>\mathrm{k}[\operatorname{len} (\mathrm{k})-1]k[0]<k[1]<…<k[i−1]<k[i]>k[i+1]…>k[len(k)−1]
这个i ii就是顶峰索引。
现在,给定一个山脉数组,求顶峰索引。
from typing import List
class Solution:
def peakIndexInMountainArray(self, A:List[int]) -> int:
flag=True
maxindex=A.index(max(A))
if maxindex > 0 and maxindex < len(A)-1:
for i in range(maxindex):
if A[i]>A[i+1]:
flag=False
break
for j in range(maxindex+1,len(A)-2):
if A[j]<A[j+1]:
flag=False
break
print(flag)
if flag:
return maxindex
else:
return
A=[1, 2, 4, 6, 4, 5] # 测试
bb=Solution()
maxindex=bb.peakIndexInMountainArray(A)
print('顶峰索引:',maxindex)
4、写出下面代码的执行结果和最终结果的类型
(1, 2)*2 # (1, 2, 1, 2)
(1, )*2 # (1, 1)
(1)*2 # 2
5.拆包过程是什么?
a, b = 1, 2
上述过程属于拆包吗?
可迭代对象拆包时,怎么赋值给占位符?
答: 拆包过程是指利用赋值语句按顺序将元组中的各元素赋值给等号左边的各个变量。
上述过程属于拆包,1, 2 已经定义了一个元组,与左边结构相对应,为解压元组。
在可迭代对象拆包时,使用 _ (单个元素), *_ (连续多个元素) 进行占位。
6.字符串函数回顾
怎么批量替换字符串中的元素?
replace(old, new [, max]) 把字符串中的old替换成new, 若指定max,则替换不超过max次
怎么把字符串按照空格进⾏拆分?
str.split()
怎么去除字符串⾸位的空格?
str.lstrip()
7.实现isdigit函数,判断字符串里是否只包含数字0~9
#实现函数isdigit, 判断字符串里是否只包含数字0~9
def isdigit(string):
res=string.isnumeric()
if res:
print('字符串只包含数字')
else:
print('字符串不只包含数字')
return
isdigit('126710a') #测试
8.leetcode 5题 最长回文子串
给定一个字符串 s ,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
class Solution:
def longestPalindrome(self, s: str) -> str:
long=0
for i in range(len(s)):
index=s.rfind(s[i])
if index != i:
b=s[i:index+1]
l=len(b)
if l % 2 == 0:
b1=b[0:l//2]
b2=b[l//2:]
else:
m=b[(l-1)//2]
b1,b2=b.split(m,2)
if b1==b2[::-1] and l>long:
substr=b
long=l
return substr
a=Solution()#先定义对象
result=a.longestPalindrome('cbbd') #测试
print(result)