Python:Task04:列表、元组和字符串——2020.01.28

Task04:列表、元组和字符串——2020.01.28

  • 06.列表 [list]

    列表(list):有序、可更改、可重复,任意类型。

    重点 【】 ,

    thislist = ["apple", "banana", "cherry"]
    #列表每个元素用“”括起来
    print(thislist[1])
    print(thislist[-1])
    #负索引表示从末尾开始,-1 表示最后一个项目,-2 表示倒数第二个项目,依此类推。
    print(thislist[2:5])
    #2、3、4
    

    list()函数将元组、range对象、字符串或其他类型的可迭代对象类型的数据转换为列表。

    range()创建列表

    x = list(range(10,1,-2))     #起始数,结尾数,每数间隔
    y = list(range(1,10,2))
    print(x,type(x))
    print(y,type(y))
    

    列表中所保存的是对象的指针。[1,2,3],有3个指针和3个整数对象。

    x = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
    #里面的[]为一个元素,4*3二位列表,外层*里层
    for i in x:
        print(x,i)
    
    x = [[0,1,2] for row in [0,1,2,3]]
    # a for i in [ ] 是当i每等于列表里的一个元素时,i = a,用a给列表赋值
    for i in x:
        print(x,i)
    
    x = [[0]*3]*4 #4*3列表     *重复操作的意思
    """
    a = [0]*3 #这三个0的位置指向相同
    x = [a]*4
    """
    x[0][1] = 1
    print(x)
    

    添加:

    x = [[1,2,3]]
    x.append([4,5,6])  #加一个列表在后面
    x.extend([7,8,9])  #将列表拆开加后面
    print(x)
    

    删除:

    x = ["1","2","3"]
    x.remove("1")   #remove移除指定元素
    print(x)
    x.pop()         #pop移除第几个元素,默认是最后一个
    print(x)
    y = x.pop()     #pop可以将移除的元素赋值
    print(x)
    del x[0:2]      #从0开始,删除两个
    print(x)
    

    拷贝:

    list1 = [123, 456, 789, 213]
    list2 = list1
    list3 = list1[:]  #浅拷贝
    list1.sort()      #排序
    print(list1)
    print(list2)      #跟list1一起变
    print(list3)      #列表不变,只是赋值一个本身的
    

    07.元组 [tuple]

    (1,2,3) 创建后不能修改,不能赋值给元组,仅可以更改里面的元组里列表里对应的元素。

    其他的功能跟列表类似。

    t1 = (123, 456)
    t2 = (456, 123)
    t3 = t1 + t2
    t4 = t1 * 3
    print(t3,t4)
    
    #(123, 456, 456, 123) (123, 456, 123, 456, 123, 456)
    
    
    
    

    countindex 两种方法。

    t = ("iii","aaaaa")
    print(t.count("iii"))   #count('XXX') 是记录在元组 t 中该元素出现几次
    print(t.index("iii"))   #index("XXX") 是找到该元素在元组 t 的索引
    #XXX是数字的时候不用加”“
    

    解压元组(给元组里的元素赋别名)

    08.字符串

    \
    print("a'b")       #a'b
    print("a\'b")      #a'b
    print("a\nb")      
    #a
    #b
    print("a\\b")      #a\b
    print("a\tb")      #a	b
    print("a\rb")      #b
    print(r"C:\\Program Files") #C:\\Program Files 前面加一个r使得后面的\语句失效
    
    str1 = "I Love LsgoGroup"
    print(str1[:6])            #空格也算一个,前面默认是从0开始
    print(str1[5])
    

练习部分

  • 列表操作练习

    练习题

    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]
      lst.append(15)
      print(lst)
      
      lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
      lst.insert(4,20)
      print(lst)
      
      lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
      lst.extend([2,5,6])
      print(lst)
      
      lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
      lst.pop(3)
      print(lst)
      
      lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
      lst.reverse()
      print(lst)
      
      lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
      lst.sort()
      print(lst)
      
      lst = [2, 5, 6, 7, 8, 9, 2, 9, 9]
      lst.sort(reverse=True)
      print(lst)
      
      [2, 5, 6, 7, 8, 9, 2, 9, 9, 15]
      [2, 5, 6, 7, 20, 8, 9, 2, 9, 9]
      [2, 5, 6, 7, 8, 9, 2, 9, 9, 2, 5, 6]
      [2, 5, 6, 8, 9, 2, 9, 9]
      [9, 9, 2, 9, 8, 7, 6, 5, 2]
      [2, 2, 5, 6, 7, 8, 9, 9, 9]
      [9, 9, 9, 8, 7, 6, 5, 2, 2]
      

    2、修改列表

    问题描述:

    lst = [1, [4, 6], True]

    请将列表里所有数字修改成原来的两倍

    lst = [1, [4, 6], True]
    lst[0]*=2
    lst[1][0]*=2
    lst[1][1]*=2
    lst[2]*=2
    print(lst)
    

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

    如果一个数组k符合下面两个属性,则称之为山脉数组

    数组的长度大于等于3

    存在 i i i i i i >0 且 i < len ⁡ ( k ) − 1 i<\operatorname{len}(k)-1 i<len(k)1, 使得 k [ 0 ] < k [ 1 ] < … < k [ i − 1 ] < k [ j ] > k [ i + 1 ] … > k [ 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] 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

    class Solution:
        def peakIndexInMountainArray(self, A) -> int:
            for i in range(1,len(A)):
                if  A[i-1]<A[i]>A[i+1]:
                    return i
    test = [1, 2, 4, 6, 4, 5]
    s = Solution()
    print(s.peakIndexInMountainArray(test))
    
  • 元组操作练习

    练习题

    1、元组概念

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

    print((1, 2)*2)     #(1, 2, 1, 2)
    print((1, )*2)      #(1, 1) 元组中*为重复
    print((1)*2)        #2 为2*1
    

    2、拆包过程是什么?

    a, b = 1, 2
    

    上述过程属于拆包吗?

    属于拆包

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

    *rest 或 *_

  • 字符串操作练习

    字符串函数回顾

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

      str.replace()

    • 怎么把字符串按照空格进⾏拆分?

      str.split()

    • 怎么去除字符串⾸位的空格?

      str.lstrip()

  • 实现isdigit函数

    题目要求

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

    def isdigit(string):
        for i in string:
            if i >= "0" and i <= "9" :
                continue
            else:
                return False
        return True
    
    string = input()
    print(isdigit(string))
    
    
    2222
    True
    
  • leetcode练习题

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

    示例:

    输入: “babad”

    输出: “bab”

    输入: “cbbd”

    输出: “bb”

    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)
    

猜你喜欢

转载自blog.csdn.net/zhaohaobingniu/article/details/113391501
今日推荐