python:列表list

list(列表)是python内置的一种数据类型,是一种有序的集合,没有固定的大小,可以随时添加和删除其中的元素。基本形式为:[a,b,c,d]


列出一周7天可以使用list:

In [1]: week = ['Monday','Tuesday','Wednesday','Thursday','Friday']
week
Out[1]:['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']

week是一个list,可以用len()获取其元素个数:

In [2]:len(week)
Out[2]:5


可以使用索引来访问list中的每一个位置上的元素,不过一定要记住索引是从0开始的!!

In [3]:week[0]
Out[3]:'Monday'

In [4]:week[1]
Out[4]:'Tuesday'

In [5]:week[3]
Out[5]:
'Thursday'

In [6]:
week[5]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-6-aab97e4d2f9f> in <module>()
----> 1 week[5]

IndexError: list index out of range


当索引超出了范围时,Python会报一个IndexError错误。由于索引是从0开始的,最后一个元素的索引是列表长度 - 1

python支持从列表最后取元素,如果要取最后一个元素,可以用-1做索引,直接获取最后一个元素:

In [7]:
week[-1]
Out[7]:
'Friday'
In [8]:
week[-4]
Out[8]:
'Tuesday'


由于list是一个可变的有序表,所以我们可以往list中追加元素到末尾:

In [9]:
week.append('Saturday')
week
Out[9]:
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']


还可以吧元素插入到指定的位置,比如索引号为6的位置:

In [10]:
week.insert(6,'Sunday')
week
Out[10]:
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']


删除list末尾的元素,使用pop()方法:

In [11]:
week.pop()
week
Out[11]:
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']


删除list中指定位置的元素,使用pop(i)方法,i是对应的索引位置:

In [12]:
week.pop(1)
week
Out[12]:
['Monday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']


把某个元素替换成别的元素,可以直接赋值给对应的索引位置:

In [13]:
week[0] = 'Tuesday'
week
Out[13]:
['Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']

list里面的元素的数据类型也可以不同,list元素也可以是另一个list,例如:

In [14]:
L1 = ['ricequant',888,False]
L2 = ['python',['c++','java'],'matlab']
L1
L2
len(L2)
Out[14]:
3

L2只有3个元素,L2[1]又是一个list,拆开写比较好理解:

In [15]:
L3 = ['c++','java']
L2 = ['python',L3,'matlab']

要想得到'java'可以使用下面两种方法:

In [16]:
L3[1]
Out[16]:
'java'
In [17]:
L2[1][1]
Out[17]:
'java'


如果一个list中一个元素也没有,就是一个空的list,它的长度为0:

In [18]:
N = []
len(N)
Out[18]:
0


    
    

Python 的列表数据类型包含更多的方法。

list.append(x)把一个元素添加到列表的结尾。

list.extend(L)将一个给定列表中的所有元素都添加到另一个列表中。

list.insert(i, x)在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x)。

list.remove(x)删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。

list.pop([i])从列表的指定位置删除元素,并将其返回。如果没有指定索引,a.pop() 返回最后一个元素。元素随即从链表中被删除。(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,这个经常会在 Python 库参考手册中遇到这样的标记。)

list.index(x)返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。

list.count(x)返回 x 在链表中出现的次数。

list.sort(cmp=None, key=None, reverse=False)对列表中的元素进行排序(参数可以用来自定义排序方法,参考 sorted() 的更详细的解释)。

list.reverse()就地倒排链表中的元素

del list[i]有个方法可以从列表中按给定的索引而不是值来删除一个子项:del 语句。它不同于有返回值的 pop() 方法。语句 del 还可以从列表中删除切片或清空整个列表(我们以前介绍过一个方法是将空列表赋值给列表的切片)。

把列表当作堆栈使用

列表方法使得列表可以很方便的做为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈中。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。例如:

In [18]:
stack = [3, 4, 5]
stack.append(6)
stack.append(7)
stack
Out[18]:
[3, 4, 5, 6, 7]
In [19]:
stack.pop()    #后进先出
Out[19]:
7
In [20]:
stack
Out[20]:
[3, 4, 5, 6]
In [21]:
print stack.pop()
print stack.pop()
print stack
6
5
[3, 4]

把列表当作队列使用

你也可以把列表当做队列使用,队列作为特定的数据结构,最先进入的元素最先释放(先进先出)。不过,列表这样用效率不高。相对来说从列表末尾添加和弹出很快;在头部插入和弹出很慢(因为为了一个元素,要移动整个列表中的所有元素)。

要实现队列,使用 collections.deque,它为在首尾两端快速插入和删除而设计。例如:

In [22]:
from collections import deque
queue = deque(["Eric", "John", "Michael"])
queue.append("Terry")
queue.append("Graham")
queue
Out[22]:
deque(['Eric', 'John', 'Michael', 'Terry', 'Graham'])
In [23]:
print queue.popleft()                 # 先到的先出
print queue.popleft()
print queue
Eric
John
deque(['Michael', 'Terry', 'Graham'])

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值