zoukankan      html  css  js  c++  java
  • 记录我的 python 学习历程-Day04 列表/元组/rang

    一、列表初识

    列表是 Python 的基础数据类型之一,它是以‘‘[ ]’’的形式括起来的,每个元素用“,”隔开,属于容器型数据类型,他可以存放大量的、各种类型的数据。

    • 基本格式

      li = ['Dylan', 'yaoyao', 1234, True, (1212, '中文'), ['列表', 'qiantao', {'name':'Dylan'}]]
      
      • 可以看到,列表内可以存放多种数据类型,或以嵌套列表,元组,字典,布尔值等。

      • 列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。

      • 而且列表是有序的,有索引值,可切片,方便取值。

    • 列表的创建

      • 方式一:(常用)

        l1 = [1, 33, 'Dylan']
        
      • 方式二:(不常用)

        l1 = list()	# 默认是空列表
        #l1 = list(iterable) # 括号里是一个可迭代对象
        l1 = list('12345')
        print(l1) # ['1', '2', '3', '4','5']
        
      • 方式三: 列表推导式(后面会讲到)

        l1 = [i for i in range(1, 5)] 
        print(l1) # [1, 2, 3, 4]  注意看 列表内的数据类型是 int 型
        

    二、列表的索引和切片

    • 索引

      l1 = ['a', 'b', 'c', 'd', 'e', 'f']
      索引    0    1    2    3    4    5(-1)
      # 打印列表中索引0 的值并改回该值的数据类型
      print(l1[0], type(l1[0])) # a <class 'str'>
      # 打印列表中最后一个索引的值,在不知道列表长度时,一般用 -1 找到列表中最后一个索引的值。
      print(l1[-1])  # 等价于 print(l1[5])  
      
    • 切片

      切片就是通过索引(索引:索引:步长)截取列表的一段,形成新的列表(原则就是顾头不顾尾)

      # 正取  切片规则:顾头不顾尾  格式:l1 = l[首:尾:步长]
      l = ['a', 'b', 'c', 'd', 'e', 'f']
      l1 = [1:3] # 取了'b','c' 并赋值给新列表 l1
      print(l1) # ['b', 'c']
      
      # 倒取  切片规则:顾头不顾尾  格式:l1 = l[首:尾:-步长]
      l = ['a', 'b', 'c', 'd', 'e', 'f']
      l1 = [4:1:-1] # 取了'e', 'd' ,'c' 并赋值给新列表 l1 注意:反取 步长为负数
      print(l1) # ['e', 'd', 'c']
      

    三、列表的增/删/改/查

    列表的增删改查是对列表的一系列常用操作,非常重要。

    • 列表的增

      • l.append( 要插入的数据 ) 插入新元素到列表索引最后一位

        l = ['a', 'b', 'c', 'd', 'e', 'f']
        l.append('Dylan')
        print(l)	# ['a', 'b', 'c', 'd', 'e', 'f', 'Dylan']
        

        举例:人员录入程序,将人员名单录入列表,按 Q 退出录入

        hr = []		# 建立一个空列表
        while 1:
            username = input("请输入你要录入的人员(退出请按'Q'):")
            if username.strip().upper() == 'Q':
                break
            else:
                hr.append(username)
        print(hr)
        
      • l.insert( 索引, 要插入的数据 ) 根据索引插入

        l = ['a', 'b', 'c', 'd', 'e', 'f']
        l.insert(2,'Dylan')		#插入位置=索引位置,原索引位置数据后移一位
        print(l)	# ['a', 'b', 'Dylan', 'c', 'd', 'e', 'f']  
        
      • l.extend( 可迭代对象 ) 迭代插入

        l = ['a', 'b', 'c', 'd', 'e', 'f']
        l.extend('这是一个可迭代对象')
        # l.extend([1,2,3])   #会将列表拆分成单个元素,分别插入
        print(l) 	#['a', 'b', 'c', 'd', 'e', 'f', '这', '是', '一', '个', '可', '迭', '代', '对', '象']
        
    • 列表的删

      • l.pop( 索引 ) 按索引删除 并返回所删除的元素

        l = ['a', 'b', 'c', 'd', 'e', 'f']
        l.pop(2) 	# 括号里写索引,可以将对应索引的元素删除,并可以反回给一个变量
        print(l) 	# ['a', 'b', 'd', 'e', 'f']
        print(l.pop(2)) 	# d
        l.pop() 	# 括号里不写索引,默认是删除最后一个,并可以将删除的元素反回给一个变量
        print(l)	# ['a', 'b', 'd', 'e', 'f']
        print(l.pop()) 		# e 
        
      • l.remove( 元素 ) 按元素删除 如果有重名元素,默认删除从左数第一个

        l = ['a', 'b', 'c', 'd', 'e', 'f']
        l.remove('f')
        print(l)	# ['a', 'b', 'c', 'd', 'e',]
        
      • l.clear() 清空列表

        l = ['a', 'b', 'c', 'd', 'e', 'f']
        l.clear()	# 清空列表,但列表还在,只不过是个空列表
        print(l)	# []
        
      • del 删除列表

        l = ['a', 'b', 'c', 'd', 'e', 'f']
        # 删除整个列表
        del l 	# 将整个列表删除了
        # 按照索引删除
        del l[-1]
        print(l)	# ['a', 'b', 'c', 'd', 'e']
        # 按照切片(步长)删除
        del l[::2]
        print(l)	 # ['a', 'c', 'e']
        
    • 列表的改

      • 直接改

        s = [1,2,3,'fjdkaj','fdsaeddd',1234,'ffdsaecc']
        s[0] = 'one'    #直接改,找到对应的索引,直接替换
        s[1] = ['one',1,2,3]    #还可以改成列表 list ,直接替换
        print(s)
        
      • 切片改

        s = [1,2,3,'fjdkaj','fdsaeddd',1234,'ffdsaecc']
        s[0:3] = 'one'    #把0到3拿出来,填上你改的,但是,是迭代的去改,以最小元素为单位
        s[0:3] = [1,2,3,8,8,] ##把0到3拿出来,迭代的填上你列表的最小元素,但是,是迭代的去改,以最小元素为单位
        print(s)    #打印内容:['o', 'n', 'e', 'fjdkaj', 'fdsaeddd', 1234, 'ffdsaecc']
        
    • 列表的查

      • 按索引查

        l = ['a', 'b', 'c', 'd', 'e', 'f']
        print(l[3]) 	# d
        
      • 按切片(步长)查

        l = ['a', 'b', 'c', 'd', 'e', 'f']
        print(l[1:4:2]) 	# b d
        
      • for i in 迭代查

        s = [1,2,3,'fjdkaj','fdsaeddd',1234,'ffdsaecc']
        for i in s:     #迭代查
            print(i)
        

    四、列表的嵌套

    • 嵌套形式

      l = [1, 2, 3, '1A', ['Dylan', 33],66]
      # 列表中的列表称之为嵌套列表,增删改查的方式与列表的相同,同样可以切片可以查改删增。
      

    五、元组

    • 元组又被称为只读列表,可以存储大量的数据,可以索引,切片(步长)。

    • 列表的基本格式与列表相同,不同的是:元组是以圆括号包起来的,而列表是方括号包起来的。

    • 格式如下:

      t = (1, 2, 'Dylan', [1, 2, 3, 'a', 'b', 'c'])
      

      需要注意的是:元组中的数据可查不可增删改,但有个例外就是,元组内如果嵌套了列表,这个列表是可以进行增删改的,方法同列表的增删改查。

    • 元组的拆包

      元组通常用于拆包,比如:

      a, b = (1, 2)	# 多一个,少一个都不行。
      print(a, b) # 1 2
      

    六、range

    • 类似于列表,自定制数字范围的数字列表

      r = range(10) # [0,1,2,3,4,5,6,7,8,9]
      print(r) 	# range(0, 10) 
      for i in r:
          print(i)	# 依次打印0到9的数字
      
      l = [1, 2, 3, '1A', ['Dylan', 33],66]
      for i in range(len(l)):	# 将列表的索引依次赋值给变量 i
      	print(i) # 打印 i (也就是列表的索引)
      # len()	获取数据的元素个数
      
    人生苦短,我用 Python
  • 相关阅读:
    Potato工作流管理系统 组织模型用例描述
    6/27 项目编码开始:一个简单的员工管理程序
    6/16 6/17加班2天
    重新过一遍ASP.NET 2.0(C#)(8) DataSourceControl(数据源控件)
    可行性分析报告结构
    6/27 一个简单的员工管理程序:添加微软成员资格数据表
    在asp.net 2.0中使用母版页和工厂方法模式
    工作流功能特性
    6/21 系统分析阶段汇报
    什么是工作流
  • 原文地址:https://www.cnblogs.com/guanshou/p/12032106.html
Copyright © 2011-2022 走看看