1. 列表是什么

列表也是序列的一种。列表能保存任意数目的Python对象,列表是可变类型。

1.1 创建列表

列表可以使用[]来创建,或者使用工厂方法list()来创建。

>>> t = list()
>>> type(t)
<type 'list'>
>>> l = []
>>> type(l)
<type 'list'>
>>> t == l
True

1.2 访问列表和更新列表

>>> t = list('furzoom')
>>> t
['f', 'u', 'r', 'z', 'o', 'o', 'm']
>>> t[1]
'u'
>>> t[2] = 'n'
>>> t
['f', 'u', 'n', 'z', 'o', 'o', 'm']
>>> t.append('.')
>>> t
['f', 'u', 'n', 'z', 'o', 'o', 'm', '.']
>>> del t[3]
>>> t
['f', 'u', 'n', 'o', 'o', 'm', '.']
>>> del t
>>> t
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 't' is not defined

2. 列表相关操作

支持比较运算、切片[]或者[:]、in, not in、连接操作符+、重复操作。

如果可以,尽量使用list.extend()方式代替连接操作符。

列表还支持非常重要的列表解析操作。

>>> [i for i in xrange(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

3. 内建函数对列表的支持

3.1 cmp()

比较原则:

  1. 对两个列表的元素进行比较。
  2. 如果比较的元素是同类型的,则比较其值,返回结果。
  3. 如果两个元素不是同一类型的,则检查它们是否是数字。

    3.1 如果是数字,执行必要的数字强制类型转换,然后比较。

    3.2 如果有一方的元素是数字,则另一方的元素大。

    3.3 否则,通过类型名字的字母顺序进行比较。
  4. 如果有一个列表首先到达末尾,则另一个长一点的列表大。
  5. 如果两个列表都到达结尾,且所有元素都相等,则返回0。

3.2 序列类型函数

  • len()
  • max()
  • min()
  • sorted()
  • reversed()
  • enumerate()
  • zip()
  • sum()
  • list()
  • tuple()

4. 列表内建函数

  • list.append(x)
  • list.extend(x)
  • list.count(x)
  • list.index(x[, start[, end]])
  • list.insert(index, x)
  • list.pop([index])
  • list.remove(x)
  • list.remove()
  • list.sort([cmp[, key[, reverse]]])

5. 列表应用

5.1 堆栈

#!/usr/bin/env python
# -*- coding: utf-8 -*- stack = [] def pushit():
stack.append(raw_input('Enter New string: ').strip()) def popit():
if len(stack) == 0:
print 'Cannot pop from an empty stack!'
else:
print 'Removed [', `stack.pop()`, ']' def viewstack():
print stack CMDs = {'u': pushit, 'o': popit, 'v': viewstack} def showmenu():
pr = """
p(U)sh
p(O)p
(V)iew
(Q)uit Enter choice: """
while True:
while True:
try:
choice = raw_input(pr).strip()[0].lower()
except (EOFError, KeyboardInterrupt, IndexError):
choice = 'q' print '\nYou picked: [%s]' % choice
if choice not in 'uovq':
print 'Invalid option, try again'
else:
break if choice == 'q':
break CMDs[choice]() if __name__ == '__main__':
showmenu()

运行示例如下:


p(U)sh
p(O)p
(V)iew
(Q)uit Enter choice: u You picked: [u]
Enter New string: Python p(U)sh
p(O)p
(V)iew
(Q)uit Enter choice: u You picked: [u]
Enter New string: is p(U)sh
p(O)p
(V)iew
(Q)uit Enter choice: u You picked: [u]
Enter New string: cool! p(U)sh
p(O)p
(V)iew
(Q)uit Enter choice: v You picked: [v]
['Python', 'is', 'cool!'] p(U)sh
p(O)p
(V)iew
(Q)uit Enter choice: o You picked: [o]
Removed [ 'cool!' ] p(U)sh
p(O)p
(V)iew
(Q)uit Enter choice: o You picked: [o]
Removed [ 'is' ] p(U)sh
p(O)p
(V)iew
(Q)uit Enter choice: o You picked: [o]
Removed [ 'Python' ] p(U)sh
p(O)p
(V)iew
(Q)uit Enter choice: o You picked: [o]
Cannot pop from an empty stack! p(U)sh
p(O)p
(V)iew
(Q)uit Enter choice: ^D You picked: [q]

5.2 队列

#!/usr/bin/env python
# -*- coding: utf-8 -*- queue = [] def enQ():
queue.append(raw_input('Enter New string: ').strip()) def deQ():
if len(queue) == 0:
print 'Cannot pop from an empty queue!'
else:
print 'Removed [', `queue.pop(0)`, ']' def viewQ():
print queue CMDs = {'e': enQ, 'd': deQ, 'v': viewQ} def showmenu():
pr = """
(E)nqueue
(D)equeue
(V)iew
(Q)uit Enter choice: """
while True:
while True:
try:
choice = raw_input(pr).strip()[0].lower()
except (EOFError, KeyboardInterrupt, IndexError):
choice = 'q' print '\nYou picked: [%s]' % choice
if choice not in 'edvq':
print 'Invalid option, try again'
else:
break if choice == 'q':
break CMDs[choice]() if __name__ == '__main__':
showmenu()

运行示例如下:


(E)nqueue
(D)equeue
(V)iew
(Q)uit Enter choice: e You picked: [e]
Enter New string: Bring out (E)nqueue
(D)equeue
(V)iew
(Q)uit Enter choice: e You picked: [e]
Enter New string: your dead! (E)nqueue
(D)equeue
(V)iew
(Q)uit Enter choice: v You picked: [v]
['Bring out', 'your dead!'] (E)nqueue
(D)equeue
(V)iew
(Q)uit Enter choice: d You picked: [d]
Removed [ 'Bring out' ] (E)nqueue
(D)equeue
(V)iew
(Q)uit Enter choice: d You picked: [d]
Removed [ 'your dead!' ] (E)nqueue
(D)equeue
(V)iew
(Q)uit Enter choice: d You picked: [d]
Cannot pop from an empty queue! (E)nqueue
(D)equeue
(V)iew
(Q)uit Enter choice: ^D You picked: [q]

Python序列——列表的更多相关文章

  1. python序列(列表,元组,字典)的常用排序

    列表 正向排序 sort() >>> list=[1,6,3,4,5,2] >>> list.sort() >>> list [1, 2, 3, ...

  2. python序列(列表,元组,字典)的增删改查

    列表 操作 列表 方法 示例 增加 list.append(obj) 增加元素到末尾 eg. >>> list1=['hello','world','how','are','you' ...

  3. python 序列:字符串、列表、元组

    python 序列:字符串.列表.元组   序列:包含一定顺序排列的对象的一个结构 内建函数:str() list() tuple() 可以使用str(obj)可以把对象obj转换成字符串 list( ...

  4. Python数据类型-03.序列-列表和元组

    本文主要记录关于Python序列中列表和元组的定义特点和常用方法 1.序列(sequence) 1.1.序列的定义 序列是一组有顺序的元素的集合(其实是是对象的集合,后期会引入“对象”这个概念)序列包 ...

  5. Python序列之列表(一)

    在Python中,列表是一种常用的序列,接下来我来讲一下关于Python中列表的知识. 列表的创建 Python中有多种创建列表的方式 1.使用赋值运算符直接赋值创建列表 在创建列表时,我们直接使用赋 ...

  6. Python语言之数据结构1(序列--列表,元组,字符串)

    0.序列 列表,元组,字符串都是序列. 序列有两个特点:索引操作符和切片操作符.索引操作符让我们可以从序列中抓取一个特定项目.切片操作符让我们能够获取序列的一个切片,即一部分序列. 以字符串为例: 1 ...

  7. [Python笔记][第二章Python序列-复杂的数据结构]

    2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...

  8. [Python笔记][第二章Python序列-tuple,dict,set]

    2016/1/27学习内容 第二章 Python序列-tuple tuple创建的tips a_tuple=('a',),要这样创建,而不是a_tuple=('a'),后者是一个创建了一个字符 tup ...

  9. [python笔记][第二章Python序列-list]

    2016/1/27学习内容 第二章 Python序列-list list常用操作 list.append(x) list.extend(L) list.insert(index,x) list.rem ...

随机推荐

  1. 基于sklearn的分类器实战

    已迁移到我新博客,阅读体验更佳基于sklearn的分类器实战 完整代码实现见github:click me 一.实验说明 1.1 任务描述 1.2 数据说明 一共有十个数据集,数据集中的数据属性有全部 ...

  2. SYN攻击SYN Attack

    SYN攻击SYN Attack   SYN Attack是一种DOS攻击方式.它利用的是TCP协议的漏洞,攻击目标,使其不在响应网络请求.在TCP协议中,需要三次握手,才能建立TCP连接.在握手过程中 ...

  3. GPP加密破解工具gpp-decrypt

    GPP加密破解工具gpp-decrypt   GPP是Group Policy Preferences(组策略首选项)的缩写,这是一个组策略实施工具.通过该工具,网络管理员可以实现更多的网络管理,如驱 ...

  4. CodeForces - 393E Yet Another Number Sequence

    Discription Everyone knows what the Fibonacci sequence is. This sequence can be defined by the recur ...

  5. Ubuntu 16.04下使用Wine安装文件内容搜索工具Search and Replace

    说明: 1.使用的Wine版本是深度出品(Deepin),已经精简了很多没用的配置,使启动能非常快,占用资源小. 2.关于没有.wine文件夹的解决方法:在命令行上运行winecfg: 下载: (链接 ...

  6. Java创建和解析Json数据方法(五)——Google Gson包的使用

    (五)Google Gson包的使用 1.简介 Gson包中,使用最多的是Gson类的toJson()和fromJson()方法:         ①toJson():将java对象转化为json数据 ...

  7. 第六讲_图像分割Image Segmentation

    第六讲_图像分割Image Segmentation 语义分割(semantic segmentation) 常用神经网络介绍对比-FCN SegNet U-net DeconvNet 目录 +三大数 ...

  8. java性能监控工具jps-windows

    jps Lists the instrumented Java Virtual Machines (JVMs) on the target system. This command is experi ...

  9. Unable to satisfy the following requirements解决方式

    今天从git上面download我们项目,然后向往常一样安装Cocoapods.可是却突然发现报错了,尝试了几遍.发现一直报错. 然后我这才看了一下,安装Cocoapods的日志,发现抛出了一个报错. ...

  10. 使用fuser命令kill一个终端(特殊文件)的方法

    /*********************************************************************  * Author  : Samson  * Date   ...