Python基础-列表

列表嘛,很亲切

表示方法:

a=[1,'abc',[12,23],(2,34),{'a':1},{2,3,4},array([[1,5],[2,4]])可以看到,列表里的元素几乎可以是任何类型的

空列表可以用

a=[] 或 a=list()生成,此时len(a)=0

支持索引,深层索引以及分片

a[1][0]          'a'

a[4]['a']         1

a[-1][0]         array([1,5])

a[0:2]            [1,'abc']

列表是可变的,我们可以通过索引分片改变列表中的元素,但是列表中元素的子元素不一定可以改变,这取决与列表中元素是否为可变类型。String不能通过索引分片来改变它的内容。

a[0]=5

a[1]=[1,2,3,4]

a[4]['a']=7

在定义多维array的时候发现了一个问题,先马下来。

array([[1,2],1])通过,

array([[1, 2], 1], dtype=object)

array([1,[1,2]])报错,

ValueError: setting an array element with a sequence.

这里点击打开链接解释的很棒,解决办法就是主动告诉python我们要定义的这个array不是一个矩阵或者说向量,即

array([1,[1,2]],dtype=object)

python能自动识别array([[1,2],1])的dtype为object,但array([1,[1,2]])要手动输入,啥原因我也不知道。跑偏了。

通过分片改变列表:

a[0:2]=[1,2,4,5,6,7]   步长为1,左右两边的size可以不相等

a[::2]=[0,1,2,3]   步长不为1,左右两边的size必须相等

还可以通过索引,分片删除某些位置上的元素,用del

del a[0] //删除第一个元素

del a[::2] //删除奇数位上的元素

del a[:] //删除全部元素,保留a

del a //将变量a整个删除


列表中的API

首先是不改变列表本身的一些操作:

1.count 统计列表中某元素出现的次数

l=[1,1,1,2,3,4,5]

l.count(1)      3

2.index 返回列表中某个元素第一次出现的位置

l.index(1)      0

然后下面这些API会改变列表:

3.append 向列表的最后添加一个元素

l.append(6)

l

[1,1,1,2,3,4,5,6]

敲黑板!!!

append每次只向list的最后添加一个元素,所以不管你添加的元素的size是多少,都被视为新列表中的一个元素

l.append([7,8]) 

[1,1,1,2,3,4,5,6,[7,8])

那么怎么添加多个元素呢?

4. extend 把某个序列里的元素依次添加到list的结尾,相当于l=l+序列

l.extend([9,10,'a'])

[1,1,1,2,3,4,5,6,[7,8],9,10,'a']

5.insert  把某个新元素插入到list的某个位置,取代原来这个位置上的元素,原来位置上的元素的新位置+1。一次只插一个元素哦

l.insert(-1,['b','c'])

[1,1,1,2,3,4,5,6,[7,8],9,10,['b','c'],'a']

6.remove 移除列表中的第一次出现的某个元素

l.remove(['b','c'])

[1,1,1,2,3,4,5,6,[7,8],9,10,'a']

7.pop 与del类似,删除某个位置上的元素,但是会返回到删除的这个元素。

l.pop(-1) 

'a'

8.sort 排序,从小到大,从头到尾排序。当list里含有不同类型的数据时会报错。

l=['a','c','u','d']

l.sort()

['a','c','d','u']

还有一个sorted函数,该方法不会改变原来的list

sorted(l) 

9.reverse 反向排列,头变尾,尾变头。

l.reverse() 

不想改变list的话可以用分片操作达到相同的效果,从头到尾取步长为-1即可。

a=l[::-1]             


还有一个容易犯错的问题,就是

a=[1,2,3,5,7]

b=a

此时b和a指向同一个地方,改变b的值a也会跟着变。

猜你喜欢

转载自blog.csdn.net/keyboardwarrior/article/details/79000844