当前位置:   article > 正文

【Python数据类型】有序序列:列表,元组,字符串_python有序序列

python有序序列
1. 什么是有序序列?

        有顺序的,可以通过索引取值,可以遍历。

2.有序序列通用的特性?
  • + 拼接
      1. # 1.列表拼接
      2. list1 = [1, 2, 3, 4, 5, 6]
      3. list2 = [7, 8, 9]
      4. list3 = list1 + list2
      5. print(list3) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
      6. # 2.元组拼接
      7. tup1 = (1, 2, 3, 4)
      8. tup2 = (5, 6, 7)
      9. tup3 = tup1 + tup2
      10. print(tup3) # (1, 2, 3, 4, 5, 6, 7)
      11. # 3.字符串拼接
      12. str1 = "Hello,"
      13. str2 = "World"
      14. str3 = str1 + str2
      15. print(str3) # Hello,World
  • *,重复
    1. list1 = [1, 2, 3]
    2. tup1 = (1, 2, 3)
    3. str1 = 'abc'
    4. print(list1*2) # [1, 2, 3, 1, 2, 3]
    5. print(tup1*2) # (1, 2, 3, 1, 2, 3)
    6. print(str1*2) # abcabc

  • 切片
    • 从序列中切出部分元素的操作,返回的是一个新序列
    • 语法格式: 变量名[start:end:step]     左开右闭[start,end),step可以为负数
      • 参数start,省略时表示起始索引;如果填写超出索引范围不报错
      • 参数end,省略时表示终止索引;如果填写超出索引范围不报错
      • 参数step,数值表示取值的步长,从当前索引开始向后取step。省略时表示步长=1;正负表示取值方向
        • 为正时,从左到右; 不填写该参数默认为正
        • 为负时,从右到左
        1. # 以列表切片为例:
        2. list1 = [1, 2, 3, 4, 5, 6]
        3. print(id(list1))
        4. # 场景1: 正序取片,仅有起始索引,则从该索引开始取到最后且step为1
        5. list2 = list1[2:]
        6. print(list2) # [3,4,5,6]
        7. # 场景2: 正序取片,仅有结束索引,则从0开始索引开始取到该索引且step为1
        8. list3 = list1[:2]
        9. print(list3) # [1,2,3]
        10. # 场景3: 正序取片,3个参数从左向右取
        11. list4 = list1[1:4:2]
        12. print(list4) # [2, 4]
        13. # 场景4: 正序取片,无参数(默认从左向右取值,0开始索引到末尾索引,步长为1)
        14. list5 = list1[::]
        15. print(list5) # [1,2,3,4,5]
        16. # 逆序取片,3个参数从右向左取
        17. list6 = list1[3:1:-1]
        18. print(list6) # [4,3]
        19. # 逆序取片,仅有起始索引,则从该索引开始取到最后且step为-1
        20. list7 = list1[3::-1]
        21. print(list7) # [4,3,2,1]
        22. # 逆序取片,仅有结束索引,则从起始索引到该索引且step为-1
        23. list8 = list1[:2:-1]
        24. print(list8) # [6,5,4]
        25. # 逆序取片,仅有step且为-1
        26. list9 = list1[::-1]
        27. print(list9) # [6,5,4,3,2,1]
    • ❗️注意点1:修改切片的值,值需要是可迭代的,否则报错:TypeError: can only assign an iterable
      1. 切片赋值
      2. lst = [1,2,3,4]
      3. lst[2:] = 0
      4. print(lst) # TypeError: can only assign an iterable
    •  ❗️注意点2: 起始索引要早于结束索引,否则取不到值但也不会抛异常
        1. str = '112113112114'
        2. print(str[3:1]) # 正向切片取不到值,因为从左到右取值起始索引晚于结束索引
        3. print(str[3:-1:-1]) # 逆向切片取不到值,因为从右到左取值起始索引晚于结束索引
  • 索引(访问序列对象的主要方式)
    • 索引一般为整数,放在[]中。返回的是一个元素
    • 语法格式:变量[索引值]
        1. # 1.列表拼接
        2. list1 = [1, 2, 3, 4, 5, 6]
        3. # 取索引为0的第1个元素
        4. print(list1[0]) # 1
        5. # 取反索引的值即~索引=-(索引值+1)
        6. print(list1[~2]) # 4
        7. # 2.元组拼接
        8. tup1 = (1, 2, 3, 4)
        9. print(tup1[3]) # 4
        10. # 3.字符串拼接
        11. str1 = "Hello,"
        12. print(str1[2]) # l
  • 成员验证
    • 使用成员运算符in去判断是否存在在序列里,返回的是bool值
    • 语法: 元素 in 序列
  • 逆序
    • 使用reversed()内置函数,返回的是可迭代对象
  • count()函数
    • 计算元素的个数
    • 语法: seq.count(element)
    1. str1 = "hello world"
    2. print(str1.count('l') # 3
    3. list1 = [1,2,3,4,3,2,1]
    4. print(list1.count(3)) # 2
    5. tuple1 = (1,2,3,4,3,2,1)
    6. print(tuple1.count(3)) # 2
    1. 题目一: 计算字符串中第一个不重复的字符
    2. str = "Hi,Hello,World,hei"
    3. def fuc(str):
    4. for j in str:
    5. if str.count(j) == 1:
    6. return j
    7. return False
    8. print(fuc(str))

    ​​​​​​​3.列表与元组的区别

  • 区别列表元组
    表示符号[]{}
    序列可变序列不可变序列
    访问和处理速度动态数组,慢静态数组,快
    是否可作为字典的键

总结:

         1. 有序序列逆序

  1. 方法一: 使用切片
  2. lst = [1, 2, 3, 4]
  3. str1 = "Hello"
  4. tup1 = (1, 2, 3, 4)
  5. print(lst[::-1])
  6. print(str1[::-1])
  7. print(tup1[::-1])
  8. 方法二: 使用reversed()内置函数
  9. lst = [1, 2, 3, 4]
  10. str1 = "Hello"
  11. tup1 = (1, 2, 3, 4)
  12. print(list(reversed(lst)))
  13. print("".join(list((reversed(str1)))))
  14. print(tuple(reversed(tup1)))
  15. 方法三: for和range()
  16. lst = [1, 2, 3, 4]
  17. str1 = "Hello"
  18. tup1 = (1, 2, 3, 4)
  19. lst1 = [lst[i] for i in range(len(lst)-1, -1, -1)]
  20. print(lst1)
  21. str2 = [str1[i] for i in range(len(str1)-1, -1, -1)]
  22. print("".join(str2))
  23. tup2 = [tup1[i] for i in range(len(tup1)-1, -1, -1)]
  24. print(tuple(tup2))
  25. 方法四: while
  26. lst = [1, 2, 3, 4]
  27. str1 = "Hello"
  28. tup1 = (1, 2, 3, 4)
  29. i = len(lst)-1
  30. while i >= 0:
  31. print(lst[i])
  32. i -= 1

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/177572
推荐阅读
相关标签
  

闽ICP备14008679号