列表操作

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

一、列表创建

  • 创建空列表

 

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]

  

 

posted @ 2017-05-01 13:57  zj-luxj  阅读(224)  评论(0编辑  收藏  举报