一、列表初识

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

  • 基本格式

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

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

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

  • 列表的创建

    • 方式一:(常用)

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

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

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

二、列表的索引和切片

  • 索引

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

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

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

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

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

  • 列表的增

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

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

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

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

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

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

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

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

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

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

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

    • 直接改

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

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

    • 按索引查

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

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

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

四、列表的嵌套

  • 嵌套形式

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

五、元组

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

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

  • 格式如下:

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

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

  • 元组的拆包

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

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

六、range

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

    1. r = range(10) # [0,1,2,3,4,5,6,7,8,9]
    2. print(r) # range(0, 10)
    3. for i in r:
    4. print(i) # 依次打印0到9的数字
    1. l = [1, 2, 3, '1A', ['Dylan', 33],66]
    2. for i in range(len(l)): # 将列表的索引依次赋值给变量 i
    3. print(i) # 打印 i (也就是列表的索引)
    4. # len() 获取数据的元素个数

记录我的 python 学习历程-Day03 列表/元组/rang的更多相关文章

  1. 记录我的 python 学习历程-Day03 数据类型 str切片 for循环

    一.啥是数据类型 ​ 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,"汉"是文字,否则它是分 ...

  2. 记录我的 python 学习历程-Day13 匿名函数、内置函数 II、闭包

    一.匿名函数 以后面试或者工作中经常用匿名函数 lambda,也叫一句话函数. 课上练习: # 正常函数: def func(a, b): return a + b print(func(4, 6)) ...

  3. 记录我的 python 学习历程-Day02-while 循环/格式化输出/运算符/编码的初识

    一.流程控制之--while 循环 循环就是重复做同一件事,它可以终止当前循环,也可以跳出这一次循环,继续下一次循环. 基本结构(基本循环) while 条件: 循环体 示例 # 这是一个模拟音乐循环 ...

  4. 记录我的 python 学习历程-Day05 字典/字典的嵌套

    一.字典的初识 为什么要有字典 字典与列表同属容器型数据类型,同样可以存储大量的数据,但是,列表的数据关联性不强,并且查询速度比较慢,只能按照顺序存储. 什么是字典 先说一下什么叫可变与不可变的数据类 ...

  5. 记录我的 python 学习历程-Day06 is id == / 代码块 / 集合 / 深浅拷贝

    一.is == id 用法 在Python中,id是内存地址, 你只要创建一个数据(对象)那么就会在内存中开辟一个空间,将这个数据临时加载到内存中,这个空间有一个唯一标识,就好比是身份证号,标识这个空 ...

  6. 记录我的 python 学习历程-Day12 生成器/推导式/内置函数Ⅰ

    一.生成器 初识生成器 生成器的本质就是迭代器,在python社区中,大多数时候都把迭代器和生成器是做同一个概念. 唯一的不同就是: 迭代器都是Python给你提供的已经写好的工具或者通过数据转化得来 ...

  7. 记录我的 python 学习历程-Day08 文件的操作

    文件操作的初识 用 python 代码对文件进行各种操作. 基本构成: 文件路径:path 打开方式:读.写.追加.读写.写读-- 编码方式:utf-8 / gbk / gb2312-- f = op ...

  8. 记录我的 python 学习历程-Day11 两个被忽视的坑、补充知识点、函数名的应用、新版格式化输出、迭代器

    补充知识点 函数形参中默认参数的陷阱 针对不可变数据类型,它是没有陷阱的 def func(name, sex='男'): print(name) print(sex) func('Dylan') # ...

  9. 记录我的 python 学习历程-Day07 基础数据类型进阶 / 数据类型之间的转换 / 基础数据类型总结 / 编码的进阶

    基础数据类型 str(字符串) str:补充方法练习一遍就行 s.capitalize() 首字母大写,其余变小写 s = 'dyLAn' print(s.capitalize()) # Dylan ...

随机推荐

  1. window.getComputedStyle()方法的使用及其扩展

    1.window.getComputedStyle()方法返回值 是一个可以获取当前元素所有最终使用的CSS属性值.返回的是一个CSS样式声明对象([object CSSStyleDeclaratio ...

  2. 关于mysql驱动cj与不是cj的问题

    1. 带cj的是mysql驱动6.0以上的,不带的是6.0以下的. 2.6.0以上的需要注意有时区纠正

  3. sqlite修改表、表字段等与sql server的不同之处

    sqlite中只支持 ALTER TABLE 命令的 RENAME TABLE 和 ADD COLUMN. 其他类型的 ALTER TABLE 操作如 DROP COLUMN,ALTER COLUMN ...

  4. 《计算机网络 自顶向下方法》 第6章 链路层和局域网 Part2

    待补充完善 Web 页面的请求历程 应用层     报文.主机 运输层     报文段. 网络层     数据报.路由器.IP 地址 链路层     以太网帧.交换机.MAC 地址 步骤 1)到 4) ...

  5. 超简单解决linux音乐播放器乱码问题

    问题 中文MP3的tag信息有些因为采用了GBK编码, 导致linux下的大多播放器(Rhythmbox, Audacious)无法正确识别而显示乱码. 如下图Audacious的乱码情况. 网上的常 ...

  6. Matlab 文件格式化/Matlab Source File Formator

    由于需要使用到别人编写的Matlab代码文件,但是呢不同的人有不同的风格,有的写得就比较糟糕了. 为了更好地理解代码的内容,一个比较美观的代码会让人身心愉悦. 但是在网上并没有找到一个比较好的实现,此 ...

  7. [软件使用][matlab]最近经常用到的一些函数的意思,和用法

    ① cat(dim,A,B)按指定的维度,将A和B串联,dim是维度,比如1,2.1指列,2指行: ②numel(A),返回数组中,元素的个数 ③gpuArray(A),在gpu中产生一个数组A,一般 ...

  8. nyoj 39-水仙花数

    39-水仙花数 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:35 submit:70 题目描述: 请判断一个数是不是水仙花数. 其中水仙花数定义各 ...

  9. Qt Framework 问题之 framework/Versions/A:bundle format unrecognized, invalid, or unsuitable

    在解决标题提到的问题之后,先来介绍下Qt Framework一些基本知识. 基于QT的Mac端工程,在打包时需要对所有需要嵌入到APP的framework及dylib文件进行手动签名处理. 一.签名处 ...

  10. SCAU1143 多少个Fibonacci数--大菲波数【杭电-HDOJ-1715】--高精度加法--Fibonacci数---大数比较

    /*******对读者说(哈哈如果有人看的话23333)哈哈大杰是华农的19级软件工程新手,才疏学浅但是秉着校科联的那句“主动才会有故事”还是大胆的做了一下建一个卑微博客的尝试,想法自己之后学到东西都 ...