Python 数据科学指南1.6 写一个列表

列表:是一种顺序型的容器对象,它和元组很相似,但是它只能保存同类的数据,并且是可变的。列表支持追加操作,它可以被用来当作堆或者队列。与元组不同,它可以扩展,你可以在创建一个列表之后使用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()函数,可以将列表中的元素搅乱。

猜你喜欢

转载自blog.csdn.net/cjx_cqupt/article/details/88199375
今日推荐