1 内容总览

  • 列表的初识
  • 列表的索引切片
  • 列表的增删改查
  • 列表的嵌套
  • 元组的初识(了解)
  • 元组的简单应用(了解)
  • range

2 具体内容

  1. 列表的初识

    • why:

      • str: 存储少量的数据。切片出来全都是str类型,存储的数据单一。
      • list:能储存大量的数据。包含不同类型的数据。且有顺序,有规律,可自己制作设计其中的数据,可修改
    • what:list

      • l1 = [100, 'alex',True,[1, 2, 3]] 可承载任意数据类型,存储大量的数据。

      • python常用的容器型数据类型。

      • 列表是有序的,可索引,切片(步长)。

      • 列表可+列表 ( 叫list的合并 );列表可*int

        #列表的合并
        l1 = [1,2,3,4]
        l2 = [11,22,33]
        print(l1 + l2)   #[1, 2, 3, 4, 11, 22, 33]  是放到了一个列表里
        
        #列表*数字
        print(l1 * 2)   #[1, 2, 3, 4, 1, 2, 3, 4]   是放到了一个列表里
  2. 列表的索引,切片,步长

    li = [100, '太白', True, [1, 2, 3]]
    # 索引
    # print(li[0], type(li[0]))    #元素是什么类型,取出来就是什么类型(str取出来均是str)
    # print(li[1],type(li[1]))
    # print(li[-1])
    
    # 切片 (顾头不顾腚)
    # print(li[:2])

    相关练习题:

    li = [1, 3, 2, "a", 4, "b", 5,"c"]
    # 通过对li列表的切片形成新的列表l1,l1 = [1,3,2]
    print(li[:3])
    # 通过对li列表的切片形成新的列表l2,l2 = ["a",4,"b"]
    print(li[3:6])
    # 通过对li列表的切片形成新的列表l4,l4 = [3,"a","b"]
    print(li[1:-2:2])
    # 通过对li列表的切片形成新的列表l6,l6 = ["b","a",3]
    print(li[-3::-2])
  3. 列表的增删改查

    # 1.列表的创建(3种):
    # 方式一
    # l1 = []  #空列表
    # l1 = [1, 2, 'Alex']
    
    # 方式二
    # l1 = list()  #空列表
    # l1 = list('f小白hd12jf')    #['f', '小', '白', 'h', 'd', '1', '2', 'j', 'f']
    # print(l1)
    
    # 方式三:列表推导式(后续)
    
    # 2.列表的增删改查
    # 写在前面:a.列表的增删改3种操作中,除了.pop可以打印动作外,其他均不可打印动作;
    # b.列表的查.按索引,切片查值均是直接打印动作
    
    l1 = ['太白', '女神', 'xiao','吴老师', '闫龙']
    # 增:3种
    # 写在前面:此3种,均只能print(l1),不能print(l1.append("某元素")),因为不能打印动作
    # append:追加
    # l1.append('xx')
    # print(l1.append('xx'))  # 不能打印它!!!不能打印动作!
    # print(l1)  #只能打印l1
    
    # 举例:
    # l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙']
    # while 1:
    #     name = input('请输入新员工姓名:(Q或者q退出程序)')
    #     if name.upper() == 'Q': break
    #     l1.append(name)
    # print(l1)
    
    # insert 插入
    # l1.insert(索引,'wusir')  #要插入到哪个位置,索引就写谁
    # print(l1)   #只能打印l1,不能打印动作
    
    # extend 迭代着追加  #将可迭代对象迭代(拆开)着追加进去
    # 注:效率低,因为插入位置元素后面的元素全部需要后移
    # l1.extend('abcd')    #['太白', '女神', 'xiao', '吴老师', '闫龙', 'a', 'b', 'c', 'd']
    # l1.extend(['alex',])   #['太白', '女神', 'xiao', '吴老师', '闫龙', 'alex']
    # l1.extend(['alex', 22])   #['太白', '女神', 'xiao', '吴老师', '闫龙', 'alex',"22"]
    # print(l1)  #只能打印l1,不能打印动作
    # 注:[1,]只要带逗号,就是个列表
    
    # 删:4种
    # 写在前面:除了pop有返回值外(即可打印动作),其他3种均只可print(l1),不可打印动作.
    # pop 按照索引位置删除
    # l1.pop(-2)  # 按照索引删除
    # print(l1)
    # print(l1.pop(-2))   #若打印动作,返回的是删除的元素(即有返回值)
    # l1.pop()  # 不写索引,默认删除最后一个
    # print(l1)
    
    # remove  指定元素删除,如果有重名元素,默认删除从左数第一个
    # l1.remove('xiao')
    # print(l1)  #不能打印动作
    
    # clear清空 (了解)
    # l1.clear()
    # print(l1)  #不能打印动作
    
    # del
    # 按照索引删除
    # del l1[-1]
    # print(l1)  #不能打印动作
    # 按照切片(步长)删除
    # del l1[::2]
    # print(l1)   #不能打印动作
    
    # 改:1种-实则3种
    # 写在前面:按索引改值,只可print(l1),不可打印动作.无意义
    # a.按照索引改值
    # l1[0] = '男神'
    # b.按照切片改
    # 如何改?--是将可迭代对象 迭代着(拆开)放回原列表的切片处.
    # 切片:将可迭代对象单个放回原处来改值,可迭代对象里的元素个数与取出的元素个数可以不相等!可多可少
    # l1 = ['太白', '女神', 'xiao','吴老师', '闫龙']
    # l1[2:] = 'fsdafsdafsdfdsfsadfdsfdsgsfdag'     #切片:可多可少
    # print(l1)   #不能打印动作
    # c.按照切片步长改       #步长:取处几个就放回几个
    # 如何改?--是将可迭代对象 迭代着(拆开)放回原列表取出来的元素处.
    # 步长:取几个,就放几个,不能多也不能少!!!
    # l1[::2] = 'abc'
    # l1[::2] = 'abcd'  #会报错
    # print(l1)
    # 思考题:为什么正向能放开,反向放不开呢?
    l1 = [1,2,3,4,9,8,9]
    l1[:3:] = "asdqwe"
    print(l1)   #['a', 's', 'd', 'q', 'w', 'e', 4, 9, 8, 9]
    l1 = [1,2,3,4,9,8,9]
    l1[-1:-3:-1] = "asdqwe"
    print(l1)   #报错-ValueError:尝试将大小为6的序列分配给大小为2的扩展片
    # 底层原理:因为list只能向下延伸开辟新的内存空间,但不能反向(倒着)去开)
    
    # 写在最后:索引,切片,切片步长改值 放回去的可以是单个元素,也可以是个list
    # li = ["水杯",2,3,"abc",]
    # li[0:3:2] = [1,2,3],[1234]
    # print(li)
    # 输出结果:[[1, 2, 3], 2, [1234], 'abc']
    
    # 查:3种
    # 按索引,切片(步长)查
    # for i in l1:   #遍历
    #     print(i)
  4. 列表的嵌套

    l1 = [1, 2, 'taibai', [1, 'alex', 3,]]
    # 1,将l1中的'taibai'变成大写并放回原处。
    l1[2] = l1[2].upper()
    print(l1)
    # 2,给小列表[1,'alex',3,]追加一个元素,'老男孩教育'。
    l1[-1].append("老男孩教育")
    print(l1)   #不能打印动作
    # 3,将列表中的'alex'通过字符串拼接的方式在列表中变成'alexsb'
    l1[-1][1] = l1[-1][1] + "sb"
    print(l1)
  5. 元组的初识(了解)

    • 只读列表,不可改。存大量的数据,可以索引,切片(步长);可存储多种数据类型
    • 格式: (100, '太白', True, [1, 2, 3])
    • where:储存一些重要数据如用户名,密码,个人信息等不想让外部环境修改的一些数据
  6. 元组的简单应用(了解)

    • 元组的索引,切片

      tu = (100, '太白', True, [1, 2, 3])
      print(tu[0])
      print(tu[:3]) 
    • 遍历元组里的每个元素

      tu = (100, '太白', True, [1, 2, 3])
      for i in tu:
          print(i)
    • len:有效长度(元素个数)

      print(len(tu))   #打印元组tu的有效长度
    • .append(谁) : 只有当元组里的元素是list时,才可追加

      tu = (100, '太白', True, [1, 2, 3])
      tu[-1].append(666)   #给tu[-1]追加
      print(tu)   #不能打印动作
      
    • del: #元组tuple 里的东西不可删

      del tu[2]
      print(tu)  #报错
      # 应用:
      # 重要数据,用户名,密码,个人信息,不想让别人改动的一些数据,存在元组中。
      
    • 元组的拆包。即分别赋值。

      a, b = (1, 2)  # 多一个少一个都不行   #与一行代码交换a,b的值区分开!a,b = b,a,见下
      print(a,b)
      #输出结果: 1 2
      
      c = (1,2)
      a,b = c
      print(a,b)
      #输出结果: 1 2
      
      #注:tu(1)  int(没有逗号就是它本身)
      #tu(1,)   tuple  #有逗号就是元组
      
      #题目:一行代码交换a,b的值----2种方法实现
      a = 1
      b = 2
      a,b = b,a
      print(a,b)   #2  1    #注:a,b = [1,23],[3,45]也可  #输出结果:[1, 23] [3, 45]
      
      #元组的拆包:
      a = 1
      b = 2
      a,b = (2,1) #分别赋值
      print(a,b)   #2  1
      
      #小结:虽然2者都能实现,但原理不同??
      
  7. range

    • 看作: 一个可以自己控制范围的数字列表; #看作一个列表!!!,实则不是列表.

    • "顾头不顾腚": range(10)只能打印到数字9,[0,1,2,3,4,5,6,7,8,9];另,首不写,默认0

    • 通常和for循环结合使用

      • 利用for循环,和range遍历1-100之间的数字

        for i in range(1,101):  #"顾头不顾腚",格式:range(首,尾+1),若不写首,默认首是0.
         print(i)
        
      • 利用for循环,和range遍历1-100之间所有的偶数

        for i in range(2,101,2):     #range(首,尾+1,步长)
            print(i)
        
      • 利用for循环,和range倒序打印1-100之间所有的数字

        for i in range(100,0,-1)    #倒序,尾向尾的方向(向左)顺延1位
         print(i)
        
      • 利用for循环,利用range将l1列表的所有索引依次打印出来 ***

        l1 = ['asd', 1, 3, 'asd']
        for i in range(len(l1)):  #range(0,4)打印出来是[0,1,2,3](不顾腚).即l1各元素的索引!!!
         print(i)   #再for一下遍历出来.
        

      ​ 注: len代表元素个数,range代表一可控范围的数字列表;range(len(l1))即用元素个数去控制range的范 围.
      ​ 注: range打印出来的元素索引,要比len小1.(因为range不顾腚)

      • 坑:

        for i in range(3):        #range(3)代表[0,1,2]
            pass
        print(i)   #此行与for平齐,故执行完for语句,再执行它;故最后只是2,不是遍历[0,1,2]
        

        结果: 2

列表的初识,列表的索引切片,列表的增删改查,列表的嵌套,元组的初识,range的更多相关文章

  1. Go 语言 切片的使用(增删改查)

    Go 语言 切片的使用(增删改查) 引言Golang 的数组是固定长度,可以容纳相同数据类型的元素的集合.但是当长度固定了,在使用的时候肯定是会带来一些限制,比如说:申请的长度太大会浪费内存,太小又不 ...

  2. 分布式搜索elasticsearch 索引文档的增删改查 入门

    1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口. RESTful接口URL的格式: http://localhost:9200/ ...

  3. head插件对elasticsearch 索引文档的增删改查

    1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口.  RESTful接口URL的格式: http://localhost:9200 ...

  4. Elasticsearch 索引文档的增删改查

    利用Elasticsearch-head可以在界面上(http://127.0.0.1:9100/)对索引进行增删改查 1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演 ...

  5. 增删改查列表angular.js页面实现

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  6. elasticsearch java和_head插件对索引文档的增删改查

    利用head插件: 1,创建索引并添加一条数据(yananindex:索引名称,yanantype:索引类型,1:索引id) 2.修改索引数据(索引id1不变,_version是对该索引数据执行了几次 ...

  7. 初识Hibernate框架,进行简单的增删改查操作

    Hibernate的优势 优秀的Java 持久化层解决方案  (DAO) 主流的对象—关系映射工具产品 简化了JDBC 繁琐的编码 将数据库的连接信息都存放在配置文件 自己的ORM框架 一定要手动实现 ...

  8. 元组,列表的增删改查, for,range 循环

    1. list(增删改查) 列表可以装大量的数据. 不限制数据类型. 表示方式:[] 方括号中的每一项用逗号隔开 列表和字符串一样.也有索引和切片 常用的功能: 1. 增: append() 2. 删 ...

  9. Python(二)列表的增删改查

    一,列表的增删改查 列表中增加元素: 1,从列表的末尾增加一个元素:append("") 2,从列表中插入一个元素:insert(下标位置,插入的元素) 合并列表: 1,name. ...

随机推荐

  1. iOS 处理图片的一些小 Tip

    UIImage 缓存是怎么回事? 通过 imageNamed 创建 UIImage 时,系统实际上只是在 Bundle 内查找到文件名,然后把这个文件名放到 UIImage 里返回,并没有进行实际的文 ...

  2. 系统中 CPU 时间片是多久

    Windows 系统中线程轮转时间也就是时间片大约是20ms,如果某个线程所需要的时间小于20ms,那么不到20ms就会切换到其他线程:如果一个线程所需的时间超过20ms,系统也最多只给20ms,除非 ...

  3. Tensorflow学习笔记----模型的保存和读取(4)

    一.模型的保存:tf.train.Saver类中的save TensorFlow提供了一个一个API来保存和还原一个模型,即tf.train.Saver类.以下代码为保存TensorFlow计算图的方 ...

  4. [luogu 2568] GCD (欧拉函数)

    题目描述 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 输入输出格式 输入格式: 一个整数N 输出格式: 答案 输入样例#1: 4 输出样例#1: 4 ...

  5. [CodeForces] 543B Destroying Roads

    脑洞+暴力. 因为边权是1,所以bfs一下,O(n^2)求任意两点间最短路,再枚举. ans最大是\(dis_{s1,t1}+dis_{s2,t2}\) 再考虑有公共边的情况,一定存在两个点 u, v ...

  6. zabbix_get 获取agnet端mysql数据失败

    问题 在使用zabbix_get获取agent端的mysql数据时,总是报错,ERROR 2002 (HY000): Can't connect to local MySQL server throu ...

  7. C# 发布APP修改APP图标以及名称

    很多时候,我们用C#编程后,都要对我们的上位机生成的图标跟名字进行修改,下面我就 VS2015 怎么修改做个说明. 1.打开项目属性 2.打开应用程序的属性界面,对相应的地方进行修改就可以了 3.修改 ...

  8. UVALive 5412 Street Directions

    Street Directions Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVALive. ...

  9. Image Processing for Very Large Images

    The key idea here is the partial image descriptor VIPS(VASARI Image Processing System) 是近几年逐渐兴起的针对大图 ...

  10. Oracle 后台进程介绍

    一 进程分类: 1.服务器进程(server process): 依据客户请求完毕工作.如接收和处理应用发送的SQL语句 2.后台进程(background process): 随数据库而启动,用于完 ...