python容器——list列表的创建,访问,排序,列表元素的增加,删除,替换,成员资格的判断及其他

list列表

list可以放入数字、字符串等数据类型,可以同时放入任意类型的数据

列表的创建

1 基本语法创建
>>> l=[10,'w','','mi']
>>> L=[]#创建空列表
2 list()创建

使用list()可以将任何可迭代数据转化成列表

>>> a=list()
>>> b=list(range(10))
>>> c=list("mijing")
>>> print(a)
[]
>>> print(b)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print(c)
['m', 'i', 'j', 'i', 'n', 'g']
3 range()创建整数列表

range([start,]end[,step])

start,可选,默认为0

end,必选

step,可选,默认为1

range()返回的是一个range对象,需用list()方法转换

>>> list(range(3,10,2))
[3, 5, 7, 9]
4 推导式
>>> a=[x*2 for x in range(5)]#循环创建多个元素
>>> print(a)
[0, 2, 4, 6, 8]
>>> b=[x*2 for x in range(100) if x%9==0]#if过滤
>>> print(b)
[0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198]

访问

list.index(x)

返回第一个x的位置,若不存在则抛出异常

>>> L=['h','e','l','l','o','w','o','r','d']
>>> L.count('o') #计算单个字母出现的次数
2
>>> L.index('o')
4
Python按顺序访问list

列表是有序的,因此我们可以按顺序访问列表中的元素。

列表遍历

>>> for item in L :
...     print(item)
...
h
e
l
l
o
w
o
r
d

事实上字符串也可以看作是一种特殊的列表,它只能按顺序存放多个字符。通过for循环访问列表每一个元素的方式,我们称为迭代。

Python按索引访问list
>>> L[3]
'l'
>>> L[10]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

超出范围,抛出异常

由于列表list是一个有序的容器,所以在list里面,每一个元素都有一个唯一的位置,我们称之为索引(index),这和字符串是类似的,因此我们也可以通过位置的方式获取list中的元素

注意,这里要注意区分,列表的定义也是通过中括号[]来定义的,但这和通过索引访问列表里面的元素并不冲突

列表和字符串一样,也支持切片,通过切片的方式,获取到列表的子列表。

如果我们越界切片的话,不会出现Python运行错误,但是按照这样的下标去切片,获取不到任何元素。

>>> L[2:6]
['l', 'l', 'o', 'w']
Python倒序访问list

Python的列表,除了支持正向顺序索引获取列表中的每一个元素以外,也支持倒序访问list中的每一个元素。

>>> L[::-1]
['d', 'r', 'o', 'w', 'o', 'l', 'l', 'e', 'h']

增加元素

list.append(x)

加到列表的末尾:

>>> L.append('.')
>>> print(L)
['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'd', '.']
list.insert(index,x)

需要两个参数,分别是需要插入的位置,以及需要插入的元素。

>>> L.insert(5,',')
>>> print(L)
['h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'd', '.']
list.extend(alist)

将列表alist加到列表尾部

>>> alist=['h','i']
>>> L.extend(alist)
>>> print(L)
['h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'd', '.', 'h', 'i']

删除元素

del
  1. 根据索引删除;
>>> L=['h','e','l','l','o','w','o','r','d']
>>> del L[4]
>>> L
['h', 'e', 'l', 'l', 'w', 'o', 'r', 'd']
  1. 删除索引范围内的元素;
>>> L=['h','e','l','l','o','w','o','r','d']
>>> del L[0:4]
>>> L
['o', 'w', 'o', 'r', 'd']
  1. 删除整个列表,不只是列表内的元素。
>>> L=['h','e','l','l','o','w','o','r','d']
>>> del L
>>> L
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'L' is not defined

del操作没有返回值

list.pop(index)

默认删除列表的最后一个元素,并返回。

>>> L.pop()
'i'
>>> print(L)
['h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'd', '.', 'h']

pop()方法,除了可以删除最后一个元素以外,pop()还可以接收一个参数,指定需要删除的元素的位置。

>>> L.pop(5)
','
>>> print(L)
['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'd', '.', 'h']
list.remove()

删除首次出现的指定字符

>>> L.remove('l')
>>> print(L)
['h', 'e', 'l', 'o', 'w', 'o', 'r', 'd', '.', 'h']
list.clear()

删除列表中所有元素

>>> L.clear()
>>> print(L)
[]

翻转列表

所有元素原地翻转

>>> L=['h','e','l','l','o','w','o','r','d']
>>> L[::-1] #未改变L的内容
['d', 'r', 'o', 'w', 'o', 'l', 'l', 'e', 'h']
>>> L.reverse()	#改变了L的内容
>>> print(L)
['d', 'r', 'o', 'w', 'o', 'l', 'l', 'e', 'h']

切片

[:]提取整个列表

[start:]从start索引开始到结尾

[:end]从头开始直到end-1

[start:end]从start到end-1

[start: end :step]

[::-1]步长为负,从右到左反向提取

超出范围不会报错

>>> L=['h','e','l','l','o','w','o','r','d']
>>> L[:]
['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'd']
>>> L[3:]
['l', 'o', 'w', 'o', 'r', 'd']
>>> L[:3]
['h', 'e', 'l']
>>> L[2:6]
['l', 'l', 'o', 'w']
>>> L[2:6:2]
['l', 'o']
>>> L[::-1]
['d', 'r', 'o', 'w', 'o', 'l', 'l', 'e', 'h']

成员资格判断

in
>>> 'm' in L
True
count
>>> L.count('s')
0	#等于0不存在
>>> L.count('i')
2	#不等于0存在

列表长度

len(L)
>>> len(L)
9
for循环
>>> num = 0
>>> for item in L :
...     num+=1
...
>>> print(num)
9

计数

list.count(x)

返回指定元素x在列表中包含的个数

>>> L.count('l')
2

Python替换list中的元素

通过索引指定位置,并赋值新的元素,即可替换列表中原有的元素。

>>> L=['h','e','l','l','o','w','o','r','d']
>>> L[2]='a'
>>> print(L)
['h', 'e', 'a', 'l', 'o', 'w', 'o', 'r', 'd']

列表的复制

>>> a=['h', 'e', 'l', 'l', 'o']
>>> b=a
>>> print(a)
['h', 'e', 'l', 'l', 'o']
>>> c=b*3
>>> print(c)
['h', 'e', 'l', 'l', 'o', 'h', 'e', 'l', 'l', 'o', 'h', 'e', 'l', 'l', 'o']

列表排序

1 修改原列表,不建新列表的排序
>>> L=[30,10,20,40]
#默认是升序排列
>>> L.sort() 
>>> L
[10, 20, 30, 40]
#降序排列
>>> L.sort(reverse=True)
>>> L
[40, 30, 20, 10]
#打乱顺序
>>> import random
>>> random.shuffle(L)
>>> L
[40, 10, 30, 20]
2 建新列表
>>> L=[30,10,20,40]
>>> id(L)
1786666684864
>>> L=sorted(L)
>>> L
[10, 20, 30, 40]
>>> id(L)
1786666685184
3 reversed()返回迭代器

不对原列表做任何修改,只是返回一个逆序排列的迭代器对象

>>> c=[20,10,30,40]
>>> a=reversed(c)
>>> list(a)
[40, 30, 10, 20]
>>> list(a)
[]
4 max() min() sum()

只适用于列表

>>> a=[3,10,7,6]
>>> max(a)
10
>>> min(a)
3
>>> sum(a)
26

Python二维list

对于二维list,列表里面的每一个元素仍然是一个列表

>>> L=['a','b','c',['h', 'e', 'a', 'l', 'o', 'w', 'o', 'r', 'd'],'d','e']
>>> L[3]
['h', 'e', 'a', 'l', 'o', 'w', 'o', 'r', 'd']

两层嵌套

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值