zoukankan      html  css  js  c++  java
  • list & tuple

    主要内容:

    • 1.列表  list
    • 2.元祖  tuple
    • 3. range

    1.  列表 list

    1.1 列表概述

    • 列表是python的基础数据类型之一 , 它是以[  ] 括起来, 每个元素用' , '隔开而且可以存放各种数据类型:    
    • 列表相比于字符串.,不仅可以存放不同的数据类型. 而且可以存放大量的数据.
    • 32位 python可以存放:  536870912个元素, 64位可以存放:  1152921504606846975个元素.

    1.2 列表的索引和切片

    • 索引
      lst = ["上海滩","西游记","家有儿女","奥特曼","包青天","少年包青天"]
      print(lst[3])       #奥特曼
      print(lst[-4])      #家有儿女
      print(lst[-1][1:3])    #年包 
    • 切片
      lst = ["上海滩","西游记","家有儿女","奥特曼","包青天","少年包青天"]
      print(lst[1:3]) # 切片出来的是列表.#['西游记', '家有儿女']
      print(lst[1:5:2])  #['西游记', '奥特曼']
      print(lst[-1:-4:-2])   #['少年包青天', '奥特曼']

    注意切最后一个元素加:才会形成list,else相当于提取元素

    1.3 列表的增删改查

    (1)新增:

    • append()
      lst = []
      lst.append("周杰伦") # 追加 在最后添加, 效率比较高
      lst.append("周芷若")
      lst.append("周公瑾")
      print(lst)         #['周杰伦', '周芷若', '周公瑾']
    • insert()
      lst = ["刘德华", "渣渣辉", "古天乐", "陈小春"]
      lst.insert(2,"马德华")  # 插入, 可能会导致元素移动
      print(lst)   #['刘德华', '渣渣辉', '马德华', '古天乐', '陈小春']
    • extend()迭代增加
      lst = ["刘昊然", "张一山", "徐峥", "黄渤"]
      lst.extend(["刘能", "赵四", "广坤"])
      print(lst)  #['刘昊然', '张一山', '徐峥', '黄渤', '刘能', '赵四', '广坤']
    • ! 一定要注意append和extend的用法区别:
       #对于append()若添加一个字符串就是讲字符串整体添加到list里,
       #而extend()实现此功能需要加[],若没有[],会将字符串的的每一个元素添加到list里

    (2)删除 : 

    • remove()
      lst = ["刘能", "广坤", "皮长山", "大脚"]
      lst.remove("广坤")
      lst.remove("大脚")
      print(lst)     #['刘能', '皮长山']
    • pop()
      lst = ["刘能", "广坤", "皮长山", "大脚"]
      lst.pop(2)            # 可以指定元素删除(索引)
      print(lst)     #['刘能', '广坤', '大脚']
      s1 = lst.pop()        # 默认弹出最后一个
      print(s1)        #大脚
      s2 = lst.pop()
      print(s2)        #广坤
      print(lst)     #  ['刘能']
    • clear()
      lst = ["语文", "数学", "地理", "历史", "英语", "化学"]
      lst.clear() # 清空
      print(lst)     #[]
    • del
      lst = ["语文", "数学", "地理", "历史", "英语", "化学"]
      # 可以切片删除
      del lst[2]     #['语文', '数学', '历史', '英语', '化学']
      del lst[0]     #['数学', '地理', '历史', '英语', '化学']
      del lst[::2]   #['数学', '历史', '化学']
      print(lst)  
    • 注意pop()与del在格式上的区别   lis.pop()   del lis[]  虽然空白位置都是索引,但括号不同

    (3)修改

    • 索引和切片的使用
      lst = ["功夫", "大话西游", "少林寺", "无间道", "战狼", "战狼2"]
      lst[2] = "西西里的美丽传说"
      lst[-3] = "新世界"
      lst[1:3] = ["一步之遥"]
      lst[1:5:2] = ["胡辣汤", "烩面"] # 注意如果步长不是1. 那么元素的个数要匹配
      print(lst)

    (4)查找

    • 使用for循环
      # 列表是一个可迭代对象. 可以使用for循环
      for el in lst:
          print(el)

    注: 列表根据条件进行删除

    • 直接的思维 (错误)
      lst=["渣渣辉","古天绿","周星驰","吴孟达","陈小春"]
      lst.clear()
      for el in lst: # for 内部有一个变量来记录当前被循环的位置, 索引.
          lst.remove(el) # 直接删除. 是删不干净的. 原因是每次删除都设计到元素的移动. 索引在变.
    • 正确的方式
      # 先把要删除的内容保存在一个新列表中. 循环这个新列表. 删除老列表
      lst=["渣渣辉","古天绿","周星驰","吴孟达","陈小春"]
      new_lst = []
      for el in lst:
          new_lst.append(el)
      for el in new_lst:
          lst.remove(el)
      print(lst)
    • 示例
      lst = ["张无忌", "张三丰", "张翠山", "张嘉译", '刘嘉玲', "刘能", '刘老根']
      # 删除姓张的人
      new_lst = []
      for el in lst:
          if el.startswith(""):
              new_lst.append(el)
      for el in new_lst:
          lst.remove(el)
      print(lst)

    1.4 列表的相关操作

    • count()
      lst = ["马化腾", "马云", "刘强东", "周鸿祎", "李彦宏", "马云", "马云"]
      print(lst.count("马云"))     #3

      注意count是对list的操作,会得到新的结果

    •  sort()
      lst = [1, 8, 12, 1, 4, 6, 3]
      lst.sort()    # 排序. 默认升序
      print(lst)     #[1, 1, 3, 4, 6, 8, 12]
      lst = [1, 8, 12, 1, 4, 6, 3]
      lst.sort(reverse=True)  # 倒叙排序
      print(lst)      #[12, 8, 6, 4, 3, 1, 1] 
    • reverse()

      lst = [1, 8, 12, 1, 4, 6, 3]
      lst.reverse()  # 翻转
      print(lst)       #[3, 6, 4, 1, 12, 8, 1]
    • len()

      lst = [1, 8, 12, 1, 4, 6, 3]
      print(len(lst))  # 求长度, 和字符串一样   #7

    1.5  列表的嵌套

    lst = ["周润发", "周星驰", "周笔畅", "周公瑾", ["九品芝麻官", ["吴孟达", "alex", "林雪"],"算死草", "赌侠", "赌圣", "整蛊专家"]]
    lst[4][1][1] = lst[4][1][1].capitalize()
    print(lst)

    2. 元组

    2.1 元组的基本概念

    • 元组就是不可变的列表, 元组使用()表示, 元素与元素之间使用逗号隔开, 数据类型没有限制, 只读列表   第一层不可变
      huang = ("努尔哈赤", "皇太极", "顺治", "康熙", "雍正", "乾隆", "嘉庆")
      # huang[1] = "朱元璋" # 报错 'tuple' object does not support item assignment
      print(huang)

      注:元组的不可变的意思是子元素不可变. 而子元素内部的子元素是可 以变, 这取决于子元素是否是可变对象

    • 另外:

      # 小括号在计算机里还表示算数优先级
      # print((8+3)*7)
      tu = (1,) # 加了逗号, 就是元组了
      tu = ("哈哈","呵呵","嘿嘿",)
      print(type(tu))
      lst = list()  # []
      tu = tuple()  # 空元组

    2.2 元祖的索引和切片:  

    • 索引
      # 元组也有索引和切片 和列表一样和字符串也一样
      tu = ("iphone", "nokia", "砸核桃", "Lenovo", "HTC", "Honor")
      print(tu[-1])   # Honor    
      print(tu[1:3])  #('nokia', '砸核桃')
      print(tu[1:5:2])  #('nokia', 'Lenovo')
    • 切片
      # 不可变指的是第一层元素不可变, 第二层取决于你的数据类型
      tu = (1, 2, 5, ["胡辣汤", "滋滋冒油的大猪蹄子", "酱猪肘", "香喷喷的米饭", "脆皮炸鸡"])
      tu[3].append("锅包肉")
      print(tu)

    2.3 遍历

    tu = ("孙悟空", "白骨精", "哪吒", "二师兄", "妲己")
    for el in tu:  # element 元素
        print(el)

    5. range:

    • range(边界) 从0到边界
      # range()
      for i in range(10):  # 0-9   没有10(切记)
          print(i)
    • range(start, end) 从start到end ,不能到end
      for i in range(3, 8): # 从3-8 没有8
          print(i)
    • range(start, end, step) 从start到end. 步长是step
      for i in range(5, 10, 2): # 从5 到 10 步长是2
          print(i)

    另外:

     lst = ["张无忌", "张三丰", "张翠山", "张一山", "张磊", "张伟", "张角"]
    # # for el in lst: # 这样循环. 没有索引
    # #     print(el)
    #
    for i in range(len(lst)):  # 有索引了
         print(lst[i])
  • 相关阅读:
    串行与并行
    并发性和并行性
    循环移位操作
    关于指针
    各种编程语言的特点
    什么是面向过程,什么是面向对象?
    数组指针/指针数组的示例
    数组指针/指针数组
    操作系统判断
    springMVC---简介
  • 原文地址:https://www.cnblogs.com/wcx666/p/9598151.html
Copyright © 2011-2022 走看看