众所周知,python内置四种常用的数据结构:
列表(list)
元组(tuple)
字典(dict)
集合(set)
其中列表和元组相似,它们都按顺序保存元素,每个元素都有自己的索引,因此列表和元组都可通过索引访问元素。二者的区别在于元组是不可修改的,但列表是可修改的。
字典(dict)和集合(set)类似,它们存储的数据都是无序的,其中字典是用 key-value 的形式保存数据
列表
列表是python语言显著区别于其他语言的 一种数据结构,其设计更加灵活,可以弥补字符串本身的各种缺陷
列表是可变序列,也是一种可以存储各种数据类型的集合,用中括号[ ]
表示列表的开始和结束,元素之间用逗号,
·分隔。列表中每个元素提供一个对应的下标
列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或 所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。 鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如letters、 digits或names)是 个不错的主意。
比如,列出班里所有同学的名字,就可以用一个list表示:
列表可以通过index()方法、in成员运算、下标、切片查找相应的元素信息
1.用index()方法查找元素
访问列表中的子表可以用“[:]”运算符,“[:]”运算符语法如下:
list[start:end]list是列表的变量名称,start是起始索引,end是终止索引,该运算符访问包括start在内到end(不包括end)的范围内的列表元素,返回值仍是一个列表。
>>> list1=['Tom',1,2.3,1]
>>> list1.index('Tom')
0
>>> list1.index(1)
1 #1在列表list1里的下标是1,这里支找第一个
>>> list1.index(1,2)
3
2.in成员运算判断
若只想知道指定元素是否在列表里,则可以用in成员运算符做简单判断
好处是不会产生报错信息
>>> list1
['Tom', 1, 2.3, 1]
>>> 'a' in list1
False
3.用下标读取对应的元素
>>> list1[2]
2.3
4.切片读取
>>> list1[1:]
[1, 2.3, 1]
列表提供append()方法、insert()方法和extend()增加列表元素
#append() 方法用于在列表的末尾追加元素,该方法的语法格式如下
listname.append(obj)
#如果希望不将被追加的列表或元组当成一个整体,而是只追加列表中的元素,
#则可使用列表提供的 extend() 方法。extend()方法的语法格式如下:
listname.extend(obj)
#如果希望在列表中间增加元素,则可使用列表的 insert() 方法,
#此方法的语法格式为:
#index 参数指的是将元素插入到列表中指定位置处的索引值
listname.insert(index , obj)
>>> fruits=['apple','peach',1,2 ,66.6]
>>> fruits.append('pear')
>>> fruits
['apple', 'peach', 1, 2, 66.6, 'pear']
>>> fruits.insert(0,'starfruit')
>>> fruits
['starfruit', 'apple', 'peach', 1, 2, 66.6, 'pear']
>>> fruits.extend(['777',888,99.9])
>>> fruits
['starfruit', 'apple', 'peach', 1, 2, 66.6, 'pear', '777', 888, 99.9]
使用 insert() 方法向列表中插入元素,和 append() 方法一样,无论插入的对象是列表还是元组,都只会将其整体视为一个元素。
列表提供了clear()方法、pop()方法和remove()方法并支持del函数,实现对列表元素的删除操作
1.clear()方法
列表的clear()方法清楚列表对象里的所有元素,列表对象变成空列表
>>> list1
['Tom', 1, 2.3, 1]
>>> list1.clear()
>>> list1
[]
2.pop()方法
pop()方法使用格式:List.pop([index]).indax为可选参数,当指定时,在指定参数下标处弹出对应元素并删除元素;当不指定改参数时,pop()方法默认从列表尾部弹出并删除一个元素
>>> listpop=['球1','球2','球3']
>>> get_one=listpop.pop()
>>> print(get_one,'',listpop)
球3 ['球1', '球2']
>>> getone=listpop.pop(0)
>>> print(getone,'',listpop)
球1 ['球2']
3.remove()方法
remove()方法使用格式:List.remove(value)。其中value为要删除的元素。当需要删除的列表元素具有多个时,一次只能删除左边第一个。
>>> listpop=['球1','球2','球3','球2']
>>> listpop.remove('球2')
>>> listpop
['球1', '球3', '球2']
4.del函数
python语言中的del函数具有强大的对象删除功能,它也可以用来删除列表里指定的元素。甚至把整个列表对象予以删除
>>> listpop=['球1','球2','球3','球2']
>>> del(listpop[2])
>>> listpop
['球1', '球2', '球2']
>>> del listpop
>>> listpop
Traceback (most recent call last):
File "<pyshell#31>", line 1, in <module>
listpop
NameError: name 'listpop' is not defined
列表可以通过指定下标,对应的元素进行赋值修改。
>>> list=['球1','球2','球3','球2']
>>> list[0]='你好'
>>> list
['你好', '球2', '球3', '球2']
- count() 方法,此方法用于统计列表中某个元素出现的次数
listname.count(obj)
- index() 方法用于定位某个元素在列表中出现的位置(也就是索引),如果该元素没有出现,则会引发 ValueError 错误。
listname.index(obj,start,end)
- reverse() 方法会将列表中所有元素反向存放
listname.reverse()
- sort() 方法用于对列表元素进行排序,排序后原列表中的元素顺序会方发生改变。
listname.sort(key=None, reserse=False)
可以看到,和其他方法不同,此方法中多了 2 个参数,它们的作用分别是:
1.key 参数用于指定从每个元素中提取一个用于比较的键。例如,使用此方法时设置 key=str.lower 表示在排序时不区分字母大小写。
2.reverse 参数用于设置是否需要反转排序,默认 False 表示从小到大排序;如果将该参数设为 True,将会改为从大到小排序。
5.copy()方法,通过copy()方法实现Ll列表对象在内存中的复制,形成新的列表对象
>>> fruit=['banana','pear','apple','peach']
>>> fruit_1=fruit.copy()
>>> fruit_1.sort()
>>> fruit_1
['apple', 'banana', 'peach', 'pear']
>>> fruit_h=fruit.copy()
>>> fruit_h.sort(reverse=True)
>>> fruit_h
['pear', 'peach', 'banana', 'apple']