第二章 列表和元组

数据结构:数据结构是以某种方式(如编号)组合起来的数据元素(数字、字符以及其他数据结构)集合。在Python中,最基本的数据结构为序列(sequence).序列中每个元素都有其编号,即其位置和索引,其中第一个元素的索引为0,第二个为1,依次类推。

序列

概述:python中内置了多种类型的序列,我们使用较多的主要有列表、元组以及字符串,其中列表是可以修改的,而元组和字符串是不能进行修改的

通用的序列操作
  1. 索引
    • 序列中所有元素都有编号,都是从0开始,字符串中的索引指向第一个元素
      x=['ake', 'dkd', 123, 3, 'hdi'] x[0]->'ake'
  • 索引也可以从最后一个开始,用虚数(负号)表示即可;
    greeting ='Hello' greeting[0]-> 'H' greeting [-1]->'o'
  1. 切片
    索引主要用于访问单个元素,而要访问两个及以上元素则需要用切片(slicing)来访问特定范围内的元素,即使用两个索引即可,中间用冒号分割;
    • [n1 : n2] 表示从索引出n1到n2范围内的元素,其中n1指定的元素时包含在切片内,而n2则不包含;需要指出的是,如果n1、n2为负数,表示反向索引,最后一个元素从-1开始计数,依次类推;
    • 其他简写 如[n1:]表示索引出从n1开始之后的所有元素,也可以省略第一个元素[:n],如果两个都省略表示切片所有内容;
      numbers=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] number[3:6]->[4, 5, 6] number[3:]->[4, 5, 6, 7, 8, 9, 10] number[:3]->[1, 2, 3] number[ : ]->[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    • 步长:执行切片时,除了指定起点和终点外,还有一个参数,即步长,默认为1(可省略),意味从一个元素移动到下一个元素,也可自定义为其他步长,如2表示从起点到终点每隔一个元素提取一个元素,步长不能为0,否则移不动,但可以为负数,表明反方向移动。
      number [0:10:1]->[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] number [0:10:2]->[1, 3, 5, 7, 9] number [8: 3: -1]->[9, 8, 7, 6, 5] number [::-2]->[10, 8, 6, 4, 2]
  2. 相加
    与字符串拼接类似,用加法进行运算,但拼接时 只能拼接相同类型的,即只能列表与列表、字符串与字符串、元组和元组拼接,而不能列表与字符串或元组进行拼接
    [1, 2, 3] + [4, 5, 6] ->[1, 2, 3, 4, 5, 6] 'Hello,' +'world!'->'Hello, world!'
  3. 相乘
    将序列与数x相乘,将重复这个序列x次来创建一个新序列
    'python'*5->'pythonpythonpythonpythonpython' [12]*5->[12, 12, 12, 12, 12]
    如果要创建一个没有任何返回值的序列,应该用None表示,而不是0
  4. 成员资格检查
    要检查特定的值是否包含在序列中,可使用in运算符,它检查是否满足指定条件,并返回相应的值:满足时返回True,不满足是返回False。这种运算符称为布尔运算符,返回的值称为布尔值。(注意True和False的正确写法)
    permission='rw' 'r' in permission->True 'x' in permission->False
  5. 序列长度、最大及最小元素等
    • 长度:len
    • 最大值:max
    • 最小值:min
      numbers=[100, 34, 678] len(numbers)->3 max(numbers)->678 min(numbers)->34
  6. 迭代(后面介绍,此处不展开)
列表:Python的主力

一、创建列表 (函数list)
list ('hello')->['h', 'e', 'l', 'l', 'o'] list('1234')->[1, 2, 3, 4]
不能输入list(1,2,3,4),会提示输入参数过多,只能输入1个参数

二、列表基本操作

  1. 修改列表:给元素赋值(不能给不存在的元素赋值)
    x=[1, 1, 1] x[1]=[2] x->[1, 2, 1]
  2. 删除元素 (del)
    del 变量名[num]
    names= ['Alice', 'Beth', 'Cecil', 'Dee-Dee', 'Earl'] del names[1] names->['Alice', 'Cecil', 'Dee-Dee', 'Earl']
    注意都不会自动有返回值,需要重新输入变量查看。
  3. 给切片赋值
    切片是一项极其强大的功能,而能够给切片赋值让这项功能更加强大,其本质也是修改列表
    切片赋值可以删除一个或多个元素,也可以替换或插入多个元素到列表中,使修改列表更加灵活
    numbers=[1, 5] numbers[1:1]=[2, 3, 4] numbers->[1, 2, 3, 4, 5] numbers[1: 4]=[ ] numbers->[1, 5]

三、其他列表方法
(目前感觉使用做多的几个方法主要是append、count、sort)

  1. append:将一个对象附加到列表末尾
    lst=[1, 2, 3] lst.append(4) lst ->[1, 2, 3, 4]
  2. clear:就地清空列表
    lst=[1,2,3] lst.clear( ) lst->[]
  3. copy:复制列表,除了用copy函数外还可以用切片赋值a[:]或list(a)
    a=[1, 2, 3] b=a.copy( ) b->[1, 2, 3]
  4. count:计算指定元素在列表出现的次数
    [[1,2], 1, 1, [2, 1, [1, 2]]].count(1)->2
  5. extend:能够同时将多个附加值添加到列表末尾(append只能添加一个)
    a=[1, 2, 3] b=[4, 5, 6] a.extend(b) a->[1, 2, 3, 4, 5, 6]
  6. index:在列表中查找指定值第一次出现的索引,当查找的元素不存在列表中时会报错提示不在列表中。
    knights=['we', 'are', 'the', 'knights', 'who', 'say', 'ni'] knights.index('who')->4
  7. insert:用于将一个对象插入到列表中
    numbers=[1, 2, 3, 5, 6, 7] numbers.insert(3, 'four') numbers->[1, 2, 3, 'four', 5, 6, 7]
  8. pop:用于从列表中删除一个元素,默认为最后一个元素,并返回这个元素(pop是唯一既修改又返回一个非None值的列表方法)
    x=[1, 2, 3] x.pop( )->3 x->[1,2] x.pop(0)->1
  9. remove:用于删除第一个指定值元素
    x=['to', 'be', 'or', 'not' , 'to', 'be'] x.remove('be') x-> ['to', 'or', 'not', 'to', 'be']
  10. reverse:按相反的顺序排列列表中的元素
    x=[1, 2, 3] x.reverse( ) x->[3, 2, 1]
  11. sort:用于列表就地排序,即对原列表进行修改,使其元素按顺序排列,而不是返回排序后的列表副本。
    x=[4, 6, 2, 1, 7, 9] x.sort( ) x->[1, 2, 4, 6, 7, 9]
  • 由于sort没有任何返回值,所以如何y=x.sort( )会出现报错,如果硬要将sort的结果给y,则需要用到sorted函数,即y=sorted(x)
  • sort还有两关键字个参数key和reverse
    • 参数key类似于参数cmp.然而不会直接使用这个函数来判断一个元素是否比另一个元素小,而是使用它来为每一个元素创建一个键,再根据这些键对元素排序,如要对列表根据元素长度排序,则需要用到函数len
      x=['aardvark', 'abalone', 'acme', 'add', 'aerate'] x.sort(key=len) x->('add', 'acme', 'aerate', 'abalone', 'aardvark']
  • 关键字函数reverse,只需将其指定为一个真值(True或False),以指出是否要按照相反的顺序对列表排序。
    x=[4, 6, 2, 1, 7,9] x. sort(reverse=True) x->[9, 7, 6, 4, 2, 1]
元组(tuple):不可修改的序列

元组语法非常简单,只需将一些值用逗号隔开,就能自动创建元组,外面为括号,不是中括号
1, 2, 3->(1, 2, 3) 42,->(42,) ( )空元组 42->42不是元组

**总结: **
序列中通用方法均有返回值:len/max/min/in
列表中有返回值的方法:pop/count/index
没有返回值的函数:append/del/clear/copy/extend/reverse/sort

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值