Python实战教程|基本数据类型之列表

    /    2018-07-03

  一. 列表的简要介绍

  列表是Python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[ ]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:

  li = ["alex",123,True,(1,2,3,"wusir"),[1,2,3,"小明",],{"name":"alex"}]

  列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位Python的限制是 536870912 个元素,64位Python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。

  二. 定义列表

>>> li = ["Alex","wuSir","egon"]
>>> print(li)
['Alex', 'wuSir', 'egon']


  三. 列表的索引于切片

  索引

>>> li = ["Alex","wuSir","egon"]
>>> print(li[0])
Alex
>>> print(li[1])
wuSir
>>> print(li[2])
egon


  切片

>>> li = ["Alex","wuSir","egon","飞机","大炮","鞭炮"]
>>> print(li[0:3]) #打印前3个索引的值
['Alex', 'wuSir', 'egon']
>>> print(li[2:5]) #打印第2个至第5个的索引的值,索引默认从0开始
['egon', '飞机', '大炮']
>>> print(li[0:5:2]) #打印第2个至第5个的索引的值,每隔2个取一次值
['Alex', 'egon', '大炮']
>>> print(li[-2::-2]) #倒序从倒数第二个向前取值,每隔2个取一次值
['大炮', 'egon', 'Alex']
>>> print(li[5:0:-2]) #倒序从索引5向前取值,每隔2个取一次值
['鞭炮', '飞机', 'wuSir']


  四. 列表的增删改查

  1. 增加

  方式一:append

>>> li = ["Alex","wuSir","egon"]
>>> li.append("laoyao") #在末尾追加"老妖"
>>> print(li)
['Alex', 'wuSir', 'egon', 'laoyao']
>>>
>>> li.append(["李老师","老男孩"]) #在末尾追加一个列表
>>> print(li)
['Alex', 'wuSir', 'egon', 'laoyao', ['李老师', '老男孩']]


  方式二:insert

  insert(index, obj)插入元素,index为要插入的索引位置,obj为插入的值。

>>> li = ["Alex","wuSir","egon"]
>>> li.insert(0,"李老师") #在0索引处添加"李老师",其余元素向后移动
>>> print(li)
['李老师', 'Alex', 'wuSir', 'egon']


  方式三:extend

  extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)即迭代追加。

>>> li = ["Alex","wuSir","egon"]
>>> li.extend(["老男孩","教育"]) #两个列表合并
>>> print(li)
['Alex', 'wuSir', 'egon', '老男孩', '教育']


  2. 删除

  方式一:pop

  pop(index) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。

>>> li = ["Alex","wuSir","egon"]
>>> obj = li.pop() #默认删除最后一个,并返回
>>> print(obj)
egon
>>> print(li)
['Alex', 'wuSir']
>>> retval = li.pop(1) #按索引删除
>>> print(retval)
wuSir
>>> print(li)
['Alex']


  方式二:remove

  remove(obj) 移除列表中某个值的第一个匹配项,无返回值。

>>> li = ["Alex","wuSir","egon"]
>>> obj =li.remove("wuSir") #删除元素,无返回值
>>> print(obj)
None
>>> print(li)
['Alex', 'egon']


  方式三:del

(1)功能一:删除列表
>>> li = ["Alex","wuSir","egon"]
>>> del li #删除整个列表
>>> print(li) #再次打印会报错
Traceback (most recent call last):
  File "", line 1, in
NameError: name 'li' is not defined
(2)功能二:可以按照索引或切片删除元素
>>> li = ["Alex","wuSir","egon","老男孩教育"]
>>> del li[3] #删除索引为3的元素
>>> print(li)
['Alex', 'wuSir', 'egon']
>>> del li[0:2] #按照切片删除元素
>>> print(li)
['egon']
(3)功能三:按照步长删除元素
>>> li = ["Alex","wuSir","egon","老男孩教育"]
>>> del li[0::2] #删除偶数位的元素
>>> print(li)
['wuSir', '老男孩教育']


  方式四:clear

  clear() 清空列表,无返回值。

>>> li = ["Alex","wuSir","egon","老男孩教育"]
>>> li.clear()
>>> print(li)
[]


  3. 修改

(1)按照索引去改
>>> li = ['alex','taibai','wusir','教育']
>>> li[1] = "老男孩" #将"taibai"修改为"老男孩"
>>> print(li)
['alex', '老男孩', 'wusir', '教育']
(2)按照切片去改
>>> li = ['alex','taibai','wusir','教育']
>>> li[1:3] = ["mimi","大人"] #按照索引切片将'taibai','wusir'修改
>>> print(li)
['alex', 'mimi', '大人', '教育']


  4. 查找

(1)按索引或切片查找
li = ["Alex","wuSir","egon","老师"]
print(li[1]) #按照索引查找
print(li[1:2]) #按照切片查找
(2)for循环查找
>>> li = ["Alex","wuSir","egon","老师"]
>>> for i in li: #循环打印结果
... print(i)
Alex
wuSir
egon
老师
(3) index(obj) 从列表中找出某个值第一个匹配项的索引位置
>>> li = ["Alex","wuSir","egon","老师"]
>>> print(li.index("wuSir")) #找"wuSir"的索引位置,找到第一个返回
1


  五. 列表的其他方法

  1. sort()

  sort() 对列表中元素进行排序。

>>> li = [1,6,2,3,9,3,1]
>>> li.sort() #默认从小到大排序
>>> print(li)
[1, 1, 2, 3, 3, 6, 9]
>>> li.sort(reverse=True) #加参数reverse=True倒序排列
>>> print(li)
[9, 6, 3, 3, 2, 1, 1]


  2. reverse()

  reverse() 反向列表中元素,即倒序。

>>> li = ["Alex","wuSir","egon","老师"]
>>> li.reverse() #反序排列
>>> print(li)
['老师', 'egon', 'wuSir', 'Alex']


  3. count()

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

>>> li = ["Alex","wuSir","egon","老师","wuSir","wuSir"]
>>> print(li.count("wuSir")) #计算"wuSir"在列表中出现的次数
3


  六. 列表与字符串的相互转换

>>> li = ["Alex","wuSir","egon"]
>>> astr = "_".join(li) #讲列表的元素通过_拼接为字符串
>>> print(astr)
Alex_wuSir_egon
>>> ali = astr.split("_") #讲字符串通过_分割,分割的每项为列表的一个元素
>>> print(ali)
['Alex', 'wuSir', 'egon']


(10)

分享至