python入门训练营 —— 列表、元组和字符串

列表

1. 列表 lst 内容如下:lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]。请写程序完成下列操作:

1. 在列表的末尾增加元素15


2. 在列表的中间位置插入元素20 --->在第三个索引位插入元素20


3. 将列表[2, 5, 6]合并到 lst 中


4. 移除列表中索引为3的元素


5. 翻转列表里的所有元素


6. 对列表里的元素进行排序,从小到大一次,从大到小一次 

2、修改列表

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

3、leetcode 852题 山脉数组的峰顶索引

如果一个数组k符合下面两个属性,则称之为山脉数组。数组的长度大于等于3,存在$i$,$i$ >0 且 $i<\operatorname{len}(k)-1$, 使得 $$\mathrm{k}[0]<\mathrm{k}[1]<\ldots<\mathrm{k}[\mathrm{i}-1]<\mathrm{k}[\mathrm{j}]>\mathrm{k}[\mathrm{i}+1] \ldots>\mathrm{k}[\operatorname{len}(\mathrm{k})-1]$$。这个$i$就是顶峰索引。

现在,给定一个山脉数组,求顶峰索引。

示例:

输入:[1, 3, 4, 5, 3]

输出:True

输入:[1, 2, 4, 6, 4, 5]

输出:False

class Solution(object):
    def peakIndexInMountainArray(self, A):
        """
        :type A: List[int]
        :rtype: int
        """
        return A.index(max(A))

元组

1. 写出下面代码的执行结果和最终结果的类型

```python
(1, 2)*2
(1, )*2
(1)*2
```

分析为什么会出现这样的结果.

2、拆包过程是什么?

```python
a, b = 1, 2
```

上述过程属于拆包吗?可迭代对象拆包时,怎么赋值给占位符?

拆包的过程是平行赋值,也就是把一个可迭代对象里的元素,一起赋值到由对应的变量组成的元组中。

上述过程属于拆包,1,2已经定义了一个元组,与左边结构相对应,可以算作解压元组。
在可迭代对象拆包时,使用 _(单个元素)*_(连续多个元素) 进行占位。


字符串


1、字符串函数回顾

- 怎么批量替换字符串中的元素?

用正则表达式:这里

修改多个表的控制文件:这里

建立映射关系:这里

- 怎么把字符串按照空格进行拆分?

split() 方法可以实现将一个字符串按照指定的分隔符切分成多个子串,这些子串会被保存到列表中(不包含分隔符),作为方法的返回值反馈回来。该方法的基本语法格式如下:

str.split(sep,maxsplit)

 此方法中各部分参数的含义分别是:

str:表示要进行分割的字符串;

sep:用于指定分隔符,可以包含多个字符。此参数默认为 None,表示所有空字符,包括空格、换行符“\n”、制表符“\t”等。

maxsplit:可选参数,用于指定分割的次数,最后列表中子串的个数最多为 maxsplit+1。如果不指定或者指定为 -1,则表示分割次数没有限制。

在 split 方法中,如果不指定 sep 参数,那么也不能指定 maxsplit 参数。

同内建函数(如 len)的使用方式不同,字符串变量所拥有的方法,只能采用“字符串.方法名()”的方式调用。

str = "abcderf >>> c.adetrby.net"
list1 = str.split()   #采用默认分隔符进行分割
list2 = str.split('>>>')  #采用多个字符进行分割
list3 = str.split('.')   #采用 . 号进行分割
list4 = str.split(' ',4) #采用空格进行分割,并规定最多只能分割成 4 个子串
list5 = str.split('>') #采用 > 字符进行分割

注意,在未指定 sep 参数时,split() 方法默认采用空字符进行分割,但当字符串中有连续的空格或其他空字符时,都会被视为一个分隔符对字符串进行分割,如: 

str = "abdfetbh   >>>   c.qwrgvdfbhg.net"  #包含 3 个连续的空格
str.split()

- 怎么去除字符串首位的空格?

用 lstrip() 函数。如:

tele = ' 123212876454 '
tele.strip() #去掉字符串内所有空格
tele.rstrip() #去掉字符串右边空格
tele.lstrip() #去掉字符串左边空格

2、实现isdigit函数

题目要求

实现函数isdigit, 判断字符串里是否只包含数字0~9

```python
def isdigit(string):
    """
    判断字符串只包含数字
    :param string:
    :return:
    """
    # your code here
    pass
```

3、leetcode 5题 最长回文子串

给定一个字符串 `s`,找到 `s` 中最长的回文子串。你可以假设 `s` 的最大长度为 1000。

示例:

输入: "babad"

输出: "bab"

输入: "cbbd"

输出: "bb"
 

用动态规划解答:动态规划

用 manacher 算法 :manacher 算法

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值