欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

列表操作

程序员文章站 2021-11-26 20:04:01
...

列表是可变的序列,能够保存任何数据类型,用[]来表示列表。

一、列表创建

  • 创建空列表

 

a = []
b = list()

 


 

二、访问列表元素

  • 根据索引取元素(索引从0开始计数,-1表示最后一位)
a = [1,2,3,4,5]
print(a[0],a[2],a[-1])  #结果1,3,5  

 

  • 切片取元素(返回列表)
>>>a = [1,2,3,4,5]
>>>a[1:3]             #相当于取出a[1]到a[3]的值但不包括a[3],简单理解就是顾头不顾尾
[2, 3]

>>>a[0:2]             
[1, 2]

>>>a[:2]               #这里0可以省略,a[0:2]相当于a[:2]
[1, 2]

   


 

三、修改列表元素

  • 修改列表元素很简单,看代码
a = [1,2,3,4,5]
a[0] = 'test'
print(a)  #结果:['test', 2, 3, 4, 5]

四、列表中添加元素

  • 列表中添加元素有两种方法:

1、在列表末尾插入元素:append()

2、在列表中插入元素:insert()

a = []
a.append(1)
a.append(2)
print(a)   #结果:[1,2]
a.insert(0,'测试') #在索引0处添加空间,并把'测试'存储到这个地方。这种操作将列表中的所有元素都右移一个位置
print(a)  #结果:['测试', 1, 2] 

 五、列表中删除元素

  • 列表中删除元素4种方法:pop、clear、remove、del

 

1、pop:L.pop([index]) -> item -- remove and return item at index (default last)

a = [1,2,3,4]
print(a.pop())  #不加索引号,删除最后一个元素
print(a)
print(a.pop(1)) #加索引号,删除索引号所在的位置
print(a)
结果:
4
[1, 2, 3]
2
[1, 3]

2、clear:L.clear() -> None -- remove all items from L 

a = [1,2,3,4]
a.clear()    #清空列表中所有元素
print(a)
结果:
[]

3、remove:L.remove(value) -> None -- remove first occurrence of value

a = ['a','b',1,2]
a.remove('a')  #根据值删除元素
a.remove(1)
print(a)
结果:
['b', 2] 

4、del

a = ['a','b',1,2]
del a[0]  #删除a[0]的值
print(a)
del a   #删除引用
结果:
['b', 1, 2]

结论:关于pop和del的一些心得,当你对删除的值还需要引用时,那么就用pop,如果不需要引用,那么可以用del。上面这个例子,del a后,如果此时你再打印a列表就会报错


 

六、列表排序

两种方法:sort和sorted

 

>>>a = [2,1,3,5]
>>>a.sort()          #列表中的排序方法
>>>a
[1, 2, 3, 5]
>>>a.sort(reverse=True)  #从高到低排序
>>>a
[5, 3, 2, 1]

>>>a = [2,1,3,5]
>>>sorted(a)       #内置函数方法,排序完返回一个新列表
[1, 2, 3, 5]     

 

七、列表复制

浅拷贝(2种方法):

list = a[:]

list = a.copy()

深拷贝:

首先定义个copy模块,import copy

list = copy.deepcopy(a)


八、列表生成式

要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))

>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环:

>>> L = []
>>> for x in range(1, 11):
...    L.append(x * x)
...
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

写列表生成式时,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。

for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
>>>[x * x for x in range(2, 11,2)]    #也可以这么实现
[4, 16, 36, 64, 100]

九、列表中其它函数的用法

1、count:计算字符出现的次数。L.count(value) -> integer -- return number of occurrences of value

2、extend:列表后面添加元素,添加元素必须为可迭代对象。L.extend(iterable) -> None -- extend list by appending elements from the iterable

3、index:返回元素在列表中第一次出现的位置,返回索引号。L.index(value, [start, [stop]]) -> integer -- return first index of value.

4、reverse:列表翻转,L.reverse() -- reverse *IN PLACE* 

>>a = [1,2,3,1,2,4]
>>a.count(1)
2
>>a.extend(['a','b'])
>>a
[1, 2, 3, 1, 2, 4, 'a', 'b']
>>a.index('a')
6
>>a.reverse()
>>a
['b', 'a', 4, 2, 1, 3, 2, 1]