Python序列——列表
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()
比较原则:
- 对两个列表的元素进行比较。
- 如果比较的元素是同类型的,则比较其值,返回结果。
- 如果两个元素不是同一类型的,则检查它们是否是数字。
3.1 如果是数字,执行必要的数字强制类型转换,然后比较。
3.2 如果有一方的元素是数字,则另一方的元素大。
3.3 否则,通过类型名字的字母顺序进行比较。 - 如果有一个列表首先到达末尾,则另一个长一点的列表大。
- 如果两个列表都到达结尾,且所有元素都相等,则返回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序列——列表的更多相关文章
- python序列(列表,元组,字典)的常用排序
列表 正向排序 sort() >>> list=[1,6,3,4,5,2] >>> list.sort() >>> list [1, 2, 3, ...
- python序列(列表,元组,字典)的增删改查
列表 操作 列表 方法 示例 增加 list.append(obj) 增加元素到末尾 eg. >>> list1=['hello','world','how','are','you' ...
- python 序列:字符串、列表、元组
python 序列:字符串.列表.元组 序列:包含一定顺序排列的对象的一个结构 内建函数:str() list() tuple() 可以使用str(obj)可以把对象obj转换成字符串 list( ...
- Python数据类型-03.序列-列表和元组
本文主要记录关于Python序列中列表和元组的定义特点和常用方法 1.序列(sequence) 1.1.序列的定义 序列是一组有顺序的元素的集合(其实是是对象的集合,后期会引入“对象”这个概念)序列包 ...
- Python序列之列表(一)
在Python中,列表是一种常用的序列,接下来我来讲一下关于Python中列表的知识. 列表的创建 Python中有多种创建列表的方式 1.使用赋值运算符直接赋值创建列表 在创建列表时,我们直接使用赋 ...
- Python语言之数据结构1(序列--列表,元组,字符串)
0.序列 列表,元组,字符串都是序列. 序列有两个特点:索引操作符和切片操作符.索引操作符让我们可以从序列中抓取一个特定项目.切片操作符让我们能够获取序列的一个切片,即一部分序列. 以字符串为例: 1 ...
- [Python笔记][第二章Python序列-复杂的数据结构]
2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...
- [Python笔记][第二章Python序列-tuple,dict,set]
2016/1/27学习内容 第二章 Python序列-tuple tuple创建的tips a_tuple=('a',),要这样创建,而不是a_tuple=('a'),后者是一个创建了一个字符 tup ...
- [python笔记][第二章Python序列-list]
2016/1/27学习内容 第二章 Python序列-list list常用操作 list.append(x) list.extend(L) list.insert(index,x) list.rem ...
随机推荐
- ELK之收集Java日志、通过TCP收集日志
1.Java日志收集 使用codec的multiline插件实现多行匹配,这是一个可以将多行进行合并的插件,而且可以使用what指定将匹配到的行与前面的行合并还是和后面的行合并. 语法示例: inpu ...
- Java 自定义序列化、反序列化
1.如果某个成员变量是敏感信息,不希望序列化到文件/网络节点中,比如说银行密码,或者该成员变量所属的类是不可序列化的, 可以用 transient 关键字修饰此成员变量,序列化时会忽略此成员变量. c ...
- ItelliJ IDEA开发工具使用—创建一个web项目
转 http://blog.csdn.net/wangyang1354/article/details/50452806 最近想用IDEA编辑器开发,但是平时都用MyEclipse和eclipse ...
- C#报错"线程间操作无效: 从不是创建控件“XXX”的线程访问它"--解决示例
C# Winform程序中,使用线程对界面进行更新需要特殊处理,否则会出现异常“线程间操作无效: 从不是创建控件“taskView”的线程访问它.” 在网文“http://www.cnblogs.co ...
- PS 如何使用抽出滤镜抠人物的头发丝等细节
1.打开图片,复制背景,关闭背景眼睛.单击 滤镜 -抽出, 我们要学会观察图片,先来看下面这张图: 这张图片色彩虽然不算丰富,但也不是纯色背景,甚至有些许的零乱,但人物的主题却被黑色长发包围, 我们只 ...
- 推荐一款免费的SQLsever的备份软件sqlBackupAndFtp
官方网址 http://sqlbackupandftp.com/ 这个软件不错,蛮方便的.小巧使用,还能够FTP上传数据.
- CrtmpServer 接收推送视频流 注册流基本流程
今天研究了CrtmpServer 将客户端推动过来的视频流注册到服务的流程,记录下来,以备后用. 图1 注册前端视频流流程
- Git bare repo with multiple branches
http://stackoverflow.com/questions/9324762/git-bare-repo-with-multiple-branches Q: I want to make a ...
- Qt Creator设置黑色主题背景
黑色的主题看起来比較炫酷一点.也有人说黑色主题用起来对眼睛好.只是个人感觉然并卵,依据自己的习惯爱好设置就好. 假设想保护眼睛,还是将屏幕调到合适的亮度,不要太暗.自己眼睛认为舒服最好.也能够通过&q ...
- 使用Python处理Excel文件的一些代码示例
笔记:使用Python处理Excel文件的一些代码示例,以下代码来自于<Python数据分析基础>一书,有删改 #!/usr/bin/env python3 # 导入读取Excel文件的库 ...