列表:是一种顺序型的容器对象,它和元组很相似,但是它只能保存同类的数据,并且是可变的。列表支持追加操作,它可以被用来当作堆或者队列。与元组不同,它可以扩展,你可以在创建一个列表之后使用append函数给它追加一个元素。
一、示例代码
#1.快速地创建一个列表
#Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。
#Python3 list() 函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表。
#Python2 range() 函数返回的是列表。
a = range(1,10)
print (list(a))
b = ["a","b","c"]
print (b)
#2.列表可以通过索引来访问,索引起始于0
print (a[0])
#3.用负数作为索引,则对列表元素的访问从反方向开始,即最后一个元素9
print (a[-1])
#4.使用两个索引参数,切片操作可以访问列表的子集
print (list(a[1:3])) #【2,3】
print (list(a[1: ])) #【2,3,4,5,6,7,8,9】
print (list(a[-1:])) #【9】??????
print (list(a[:-1])) #【1,2,3,4,5,6,7,8]
#5.列表串联
a = [1,2]
b = [3,4]
print (a+b)
#6.列表的最小值和最大值
print (min(a),max(a))
#7.包含于和非包含于
if 1 in a :
print ("Element 1 is available in list a")
else:
print("Element 1 is inavaliable in list a")
#8.追加和扩展列表
#The range object is an iterator. It purposefully avoids forming a list of all the values since this requires more memory, and often people use range simply to keep track of a counter -- a usage which does not require holding the full list in memory at once.
a = list(range(1,10))
print (a)
a.append(10)
print (a)
#9.列表实现堆
a_stack=[]
a_stack.append(1)
a_stack.append(2)
a_stack.append(3)
print (a_stack.pop())
print (a_stack.pop())
print (a_stack.pop())
#10.列表实现队列
a_queue = []
a_queue.append(1)
a_queue.append(2)
a_queue.append(3)
print (a_queue.pop(0))
print (a_queue.pop(0))
print (a_queue.pop(0))
#11.列表排序和反转
from random import shuffle
#TypeError: 'range' object does not support item assignment
a = list(range(1,20))
#shuffle 打乱列表
shuffle(a)
print (a)
#sort 对列表进行排序
a.sort()
print (a)
#将列表反转
a.reverse()
print (a)
二、输出结果
[1, 2, 3, 4, 5, 6, 7, 8, 9]
['a', 'b', 'c']
1
9
[2, 3]
[2, 3, 4, 5, 6, 7, 8, 9]
[9]
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4]
1 2
Element 1 is available in list a
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
3
2
1
1
2
3
[6, 2, 5, 16, 11, 18, 13, 12, 10, 17, 4, 9, 1, 8, 3, 14, 19, 15, 7]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
三、特别注意
Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。
Python3 list() 函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表。
Python2 range() 函数返回的是列表。
四、工作原理
1.列表:创建方式与其他的不同,且其只有同类型的元素,且允许重复的元素。
2.可以采用extend()函数,扩充列表。如a.extend(b),其中a,b都是列表。
3.在第9步中,我们采用pop函数实现了堆的功能,pop函数用来取回追加到列表中的最后一个元素。最后一个被追加进来的元素,被第一个取回,这就是堆的后进先出(Last in First Out,LIFO);在第10步中,我们用列表来实现队列,pop函数用0作为参数,表明要取出的元素的索引已经被传递了,取出最先输入的元素,输出结果遵循的是队列的FIFO类型,但这是一种较为低效的方法。原因:列表底层实现的方法限制,弹出最初的元素不是一个好的选择。
改进措施?双端队列数据。堆或队列只能在一个方向上追加或弹出数据,而双端队列有两个端,可以在不同的端执行追加或弹出数据操作。
4.列表的内置函数,sort()默认将列表进行升序排序。reverse()函数将列表中的元素进行反转。这两个函数都是进行的位置操作。
5.random模块中的shuffle()函数,可以将列表中的元素搅乱。