一、序列的简介:
序列是Python中最基本的数据结构。
序列中的每个元素都分配一个数字作为它的索引,索引从0开始。
Python有6个序列的内置类型,最常见的是列表和元组。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
Python内置了确定序列的长度以及确定最大和最小的元素的方法。
二、列表的定义
1.定义一个空列表
list = []
2.定义一个包含元素的列表
列表的元素可以是任意类型,包括数值类型,列表,字符串等均可。
[1, 3.4, (5+6j), '7abc', '8def', True]
三、列表的操作
1.列表的索引
索引下标是从0开始计算,比如:
list[0]
读取的是列表的第1个元素
list[-1]
读取的是列表的倒数第1个元素
In [13]: list = [1,3.4,5+6j,'7abc',"8def",True]
In [14]: list[0]
Out[14]: 1
In [15]: list[1]
Out[15]: 3.4
In [16]: list[-1]
Out[16]: True
In [17]: list[-3]
Out[17]: '7abc'
2.列表的切片
list[x:y:z]x
代表从哪个索引开始切片,y代表切片到哪个位置,并且不包含第y个索引,z代表切片的步长
In [19]: list
Out[19]: [1, 3.4, (5+6j), '7abc', '8def', True]
In [20]: list[1:5:2]
Out[20]: [3.4, '7abc']
In [21]: list[:] #有效的全部打印
Out[21]: [1, 3.4, (5+6j), '7abc', '8def', True]
In [22]: list[::-1] #倒序打印
Out[22]: [True, '8def', '7abc', (5+6j), 3.4, 1]
3.列表的重复
使用 星号(*) 可以重复输出列表中的元素
In [23]: list
Out[23]: [1, 3.4, (5+6j), '7abc', '8def', True]
In [25]: list * 3
Out[25]:
[1,
3.4,
(5+6j),
'7abc',
'8def',
True,
1,
3.4,
(5+6j),
'7abc',
'8def',
True,
1,
3.4,
(5+6j),
'7abc',
'8def',
True]
In [26]: (list,) * 3 #加逗号取消换行
Out[26]:
([1, 3.4, (5+6j), '7abc', '8def', True],
[1, 3.4, (5+6j), '7abc', '8def', True],
[1, 3.4, (5+6j), '7abc', '8def', True])
4.列表的连接
使用加号(+)可以让多个列表的所有元素连接输出
In [35]: list
Out[35]: [1, 3.4, (5+6j), '7abc', '8def', True]
In [36]: arr = ['love',"520",1314]
In [37]: list + arr
Out[37]: [1, 3.4, (5+6j), '7abc', '8def', True, 'love', '520', 1314]
5.成员操作符:判断元素是否存在
In [31]: '7abc' not in list
Out[31]: False
In [32]: 3.4 in list
Out[32]: True
In [33]: 4 in list
Out[33]: False
In [34]: True in list
Out[34]: True
6.计算列表长度
使用内置方法len()
In [38]: len(list)
Out[38]: 6
In [39]: len(arr)
Out[39]: 3
7.列表的迭代
使用for循环语句进行迭代:
In [40]: for i in list:
....: print i,
....:
1 3.4 (5+6j) 7abc 8def True
特别注意:所有对列表的操作的结果,是没有保存的,要使用必须要赋值给一个变量保存!
四、列表的内置方法
1.列表的全部内置方法
In [41]: list.
list.append list.extend list.insert list.remove list.sort
list.count list.index list.pop list.reverse
2.列表内置方法操作解释
1 list.append(obj) #在列表末尾添加新的对象
2 list.count(obj) #统计某个元素在列表中出现的次数
3 list.extend(seq) #在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4 list.index(obj) #从列表中找出某个值第一个匹配项的索引位置
5 list.insert(index, obj) #将对象插入列表
6 list.pop(obj=list[-1]) #移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7 list.remove(obj) #移除列表中某个值的第一个匹配项
8 list.reverse() #反向列表中元素
9 list.sort([func]) #对原列表进行排序
特别注意:所有对列表的内置方法操作的结果,是已经保存的,列表元素已经改变
五、使用列表构建栈
栈是一种数据结构,遵循 先进后出 的原则。
代码如下:
# 列表存放栈的元素;
stack = []
info = """
栈操作
1. 入栈
2. 出栈
3. 栈长度
4. 栈顶元素
5. 退出
"""
print info
while 1:
choice = raw_input('清输入你的选择:')
if choice == '1':
in_value = raw_input('入栈元素:')
stack.append(in_value)
print "元素%s入栈成功!" % (in_value)
print stack
elif choice == '2':
# if stack != []: 判断列表是否为空;
if stack:
out_value = stack.pop()
print "%s 出栈成功!" %(out_value)
print stack
else:
print "栈为空!"
elif choice == '3':
print "栈长度为%d" %(len(stack))
elif choice == '4':
# if stack != []: 判断列表是否为空;
if stack:
print "栈顶元素为: %s" %(stack[-1])
else:
print "栈为空!"
elif choice == '5':
exit(0)
else:
print "请输入正确的选择!"
六、使用列表构建队列
队列是一种数据结构,遵循 先进先出 的原则。
代码如下:
# import queue #可以导入Python中默认的队列模块
# queue.Queue
queue = []
info = """
队列操作
1.添加队列元素
2.删除队列元素
3.队长度
4.对头元素
5.队尾元素
6.退出
"""
print info
while 1:
choice = raw_input('请输入你的选择:')
if choice == '1':
in_value = raw_input('添加队列的元素:')
queue.append(in_value)
print "元素%s添加成功!" %(in_value)
print queue
elif choice == '2':
if queue:
#queue1 = queue[::-1]
out_value = queue.pop(0)
print "%s删除成功!" %(out_value)
print queue
else:
print "队列为空"
elif choice == '3':
print "队长度:%s" %(len(queue))
elif choice == '4':
if queue:
print "对头元素为: %s" %(queue[0])
else:
print "队列为空"
elif choice == '5':
if queue:
print "队尾元素为: %s" %(queue[-1])
else:
print "队列为空"
elif choice == '6':
exit(0)
else:
print "error"