python学习笔记2.4-数据结构之列表和元组

python语言中包含的数据结构比较简单,除了简单的变量以外,还有列表(元组)、字典、集合。对于数据结构的操作一般包含四种:增、删、查、改。本文主要介绍列表(list)(包括元组tuple)的操作。
python中的list是一个有序动态集合,能够随时向其中添加或者删除元素,而tuple则相反,是一个有序静态集合,即一旦创建就不能随修改。

list

  • 创建(初始化)。list中的元素可以为任意类型,整型、字符型、列表、字典都可以.元素之间用逗号(,)隔开,整个list用[ ]包围。
la = [1,2,3]
lb = [1.2, 88, 'ss' ]
lc = [] # 空列表,也可以这样创建: lc = list()
ld = [[1, 3,5],{'s':8}, 'ss', 2.5, 6] # list的元素很灵活,只要是对象即可
  • 删除。list的删除很简单,直接使用python删除关键字:del 删除的内容, 这里删除的内容即可以是整个list,也可以是list中的某一个元素。
a = ['s','b', 'c']
del a[1] # 删除元素b
del a # 删除整个list
  • 查找(索引)。list是一个有序集合,即通过元素的下标来索引元素,与c/c++类似,第一个元素的下标为0(MATLAB的第一个下标为1)。
a = [i for i in range(10)]
for i in range(10):
    print(a[i])

除了能正向索引,还能反向索引,并不需要知道list的长度,list的第一个元素的下标为0,最后一个元素的下标为-1,一次向前减一,即倒数第二个元素下标为-2

a = [i for i in range(10)]
a[-1]  # 最后一个元素,打印出来为9
a[-2]  # 倒数第二个元素,打印出来为8

除了上述通过索引来获取单个元素,还可以通过区间下标(左闭右开)来一次索引很多元素,python中称为这种方式为切片,需要注意的是区间下标为左闭又开,即不会索引到右边下标对应的元素,只会索引到它前一个元素。

a = [i for i in range(1,10,2)]
print(a[1:3]) # 打印元素3和5
print(a[1:-1]) # 第二个到倒数第二个
print(a[1:]) # 第二个以后的全部元素

屏幕输出:

[3, 5]
[3, 5, 7]
[3, 5, 7, 9]
  • 修改。修改list一般有两种方式:
    • 在list末尾直接增加元素,这样也增加了索引,增长了列表长度。通过append()方法实现
    • 修改已有索引的元素的值,这样不增加索引,也不会增加列表的长度。
a = [1,4,3]
a.append(5) # 在末尾增加
a[2] = 9 # 通过索引直接修改
  • list的操作符操作。对于 list也可以使用len()、+、* 等操作符,len(list)用来获取list的长度(最大索引值+1),+ 号用于组合列表,* 号用于重复列表。
a = [7,'ww','ii']
length = len(a)
b = [9,44]
c = a + b #直接将a、b首尾相连
d = a*4 # 将列表a重复4次,并生成一个新的列表

*对于列表的操作只要没有赋值,就不会修改原列表的值,只会返回一个新的列表。例如上例中的+和操作、以及索引或者切片操作,都不会修改原list的值。*

  • list包含的其他方法:
方法功能
list.append(obj)在列表末尾添加新的对象
list.count(obj)统计某个元素在列表中出现的次数
list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj)从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj)将对象插入列表
list.pop(obj=list[-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj)移除列表中某个值的第一个匹配项
list.reverse()反向列表中元素
list.sort([func])对原列表进行排序

tuple

元组(tuple)是静态列表,初始化后就不能随表修改,用小括号( )表示,用下标索引,与list相比,没有修改的功能,其他都一样。在定义元组的时候我们需要注意:因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义。因此,Python规定,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义

t = (3,5)
t = (4, ) # 只有一个元素时,一定要记得加,
t = (1,'2','ss',['e','y']) #当元组中的元素为可修改的对象,比如list和dict时,这里的list和dict能够修改。
t[3][0] = 1 #  这里修改的是list而不是tuple,因为tuple的索引没有变
t[0]  # 与list一样,用下标索引
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值