列表、元祖简介

列表

  • 列表定义
  • 列表索引、切片
  • 列表元素增删改查
  • 列表遍历
  • 列表对象方法介绍

  • 列表定义

列表是最常用的Python数据类型,用方括号 [] 来表示列表,并用逗号来分隔其中的元素。下面是一个简单示例:

teachers = ['Mrs_liu','Mrs_chen']
  • 列表索引、切片

列表隶属于序列类型,序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。根据索引又可以通过切片来截取或者拼接操作,如下实例:

L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
#用索引index的方法可以访问列表中的某个元素,也可以截取列表的某一部分
a = L[0]   #值为第一个字符串元素   Michael
b = L[-1]  #值为最后一个字符串元素 Jack
c = [L[0],L[1],L[2]]

#如果需要取前N个元素,需要使用循环,后面详细介绍循环
r = []
n = 3
for i in range(n):
    r.append(L[i])

#对这种经常取指定索引范围的操作,用循环十分繁琐。提供了slice操作,大大简化
#取前N个元素
b = L[0:n]  #表示从索引0开始取,一直到索引n-1,slice遵循前闭后开
b = L[:n]   #0可以省略

#类似的,python支持倒数索引取值,也支持倒数切片操作
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
L[-2:]     #因为最后一个元素索引为-1,所以此处无前闭后开规则

#切片也支持根据步长取值,step_length默认值为1
list[start:end:step_length]
#根据步长取值,有时有意想不到的便利之处
L = list(range(11))
#取巧取出了10以内的偶数
L[::2]
  • 列表元素增删改查

1.修改列表元素
修改列表元素的语法与访问列表元素的语法类似。要修改列表元素,可指定列表名和要修改 的元素的索引,再指定该元素的新值。

phoneprices = [1500,5000,4666]      #一个手机价格的列表
#需要修改4666价格为5666
phoneprices[-1] = 5666
print(phoneprices)            

重新打印出phoneprices列表,phoneprices = [1500,5000,5666]
你可以修改任何列表元素的值,而不仅仅是最后一个值。

2.在列表中增加元素
Python提供了多种在既有列表中添加新数据的方式: 在列表末尾追加元素、在列表任意位置插入元素。

用上一个示例,表示如何在列表末尾追加元素和插入元素:

#末尾追加元素
phoneprices.append(9000)    # append方法默认追加至列表末尾
print(phoneprices)

phoneprices = [1500,5000,5666,9000]       #打印结果

#列表中插入元素
phoneprices.insert(0,888)   # insert方法指定插入元素的索引和值
print(phoneprices)

phoneprices = [888,1500,5000,5666,9000]  #打印结果

3.从列表中删除元素
删除列表元素也有两种方法:根据索引删除和直接删除值。
根据索引删除中有2种方法: del、pop 然而两种方法的区别在于pop后还能继续使用。
(1).如果知道要删除的元素在列表中的位置,可使用del语句

phoneprices = [888,1500,5000,5666,9000]

del phoneprices[0]
print(phoneprices)

使用del可以删除列表中的任意元素,前提是需要知道索引。下面的输出表明已经将最低价888 从列表中删除

phoneprices = [1500,5000,5666,9000]

这个示例中,用del删除了元素之后 就无法访问到了。

(2)方法pop()可删除列表末尾的元素,并让你能够接着使用它。术语弹出(pop)源自这样的类 比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。

phoneprices = [1500,5000,5666,9000]
print(phoneprices)
poped_phoneprices = phoneprices.pop()

print(phoneprices)
print(poped_phoneprices)

首先定义一个列表,并打印出来。接着从列表弹出一个值,赋值给变量poped_phoneprices。然后打印列表,看是否已经删除最后一个元素。最后打印出弹出的值,证明pop()方法删除了值后是可以继续用的。
下面的输出表明,9000从列表中被删除,存储在变量poped_phoneprices中:

[1500,5000,5666,9000]
[1500,5000,5666]
9000

(3)如果你只知道要删除的元素的值,可使 用方法remove()

phoneprices = [1500,5000,5666]
print(phoneprices)

phoneprices.remove(5000)
print(phoneprices)

定义一个列表,并打印出列表。使用remove()方法删除 一个元素为5000的列表元素,并打印出删除之后的列表,来证实remove()方法确实有效。
remove()方法和pop()一样,一样可以继续使用被删除的元素,方法一致,就是通过将删除元素存储在变量中,以供后续使用。 以上述例子为例,如:

phoneprices = [1500,5000,5666]
removed = 5000
phoneprices.remove(removed)

print(phoneprices)
peint(removed)

打印结果为:

[1500,5666]
5000
  • 列表遍历
    主要是根据for循环来进行遍历操作,后续讲解循环时,着重介绍

  • 列表常用方法介绍

list.append(obj)
#往列表末尾添加对象

list.insert(index,obj)
#往指定索引位置添加对象

list.pop()
#删除列表末尾元素

list.remove(obj)
#删除列表中第一个匹配的对象

list.count(obj)
#统计某个元素在列表中出现的次数

list.index(obj)
#从列表中找出第一个匹配的索引值        类似string中的find方法

list.reverse()
#反向重组列表元素

list.sort()
#永久对列表进行排序

list.sorted()
#临时对列表进行排序

元祖

  • 元祖定义
  • 元祖常用方法

列表非常适合用于存储在程序运行期间可能变化的数据集,列表是可以修改的。然而,有时候你需要创建一系列不可修改的元素, 元组可以满足这种需求。Python将不能修改的值称为不可变的,而不可变的列表被称为元组。

  • 元祖定义
    元祖也是最常用的Python数据类型之一,用圆括号 () 来表示列表,并用逗号来分隔其中的元素。下面是一个简单示例:
tup1 = ('bmw',)
tup2 = ('bmw','benz')

元祖中只有一个元素时,需要多加一个逗号 来消除歧义。
元祖也是一种序列数据类型,所以索引,切片对元祖依旧有效。与列表中一致,此处略去不表。
唯一的不同点在于,列表是可变的,而元祖是不可变的。具体什么意思呢?列表可以修改、更新列表内的元素,而元祖却不行。通过下面的实例,你可以更加深切体会可变,不可变的含义:

tuple = (5,'hello',['a',6])

print(tuple[0])   #结果为5

tuple[2][1] = 1
print(tuple)
#值为  (5,'hello',['a',1])  

tuple的值和最开始定义的值不一样了,不是说tuple是不可变的么?怎么现在又变了呢?
首先,我们用图示的方法来看下tuple包含的意义:
这里写图片描述
当我们执行了tuple[2][1] = 1这段代码之后,tuple就变成了这样:
这里写图片描述
这样一看,确实好像tuple是改变了,但是其实改变的不是tuple,而是tuple中的list。那你又要说了,list是tuple里的一个元素,list都改变了,tuple不也是改变了么?
其实不然,tuple的不可变,是指指向关系不变,tuple中的这个list改变了内部元素,但是tuple还是指向这个list,并没有去指向了另一个list。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值