1. list和元组

2019-08-17  本文已影响0人  守住这块热土
2cfc18adf51b61ca8140561071d20c1d.png

1. 列表和元组基础概念

tup = (1, 2, 3, 4)
new_tup = tup + (5, ) # 创建新的元组 new_tup,并依次填充原元组的值
# new _tup
# (1, 2, 3, 4, 5)

l = [1, 2, 3, 4]
l.append(5) # 添加元素 5 到原列表的末尾
# l
# [1, 2, 3, 4, 5]
# 注意:切片操作,[ ) :  =< ~ <
l = [1, 2, 3, 4]
l[1:3] # 返回列表中索引从 1 到 2 的子列表
# [2, 3]

tup = (1, 2, 3, 4)
tup[1:3] # 返回元组中索引从 1 到 2 的子元组
# (2, 3) 
l = [3, 2, 3, 7, 8, 1]
l.count(3)  ###:计算某个item出现的次数
2
l.index(7)###: 返回item第一次出现的索引
3
### list.reverse/list.sort
l.reverse()
l
[1, 8, 7, 3, 2, 3]
l.sort()
l
[1, 2, 3, 3, 7, 8]

tup = (3, 2, 3, 7, 8, 1)
tup.count(3)
2
tup.index(7)
3
list(reversed(tup))
[1, 8, 7, 3, 2, 3]
sorted(tup)
[1, 2, 3, 3, 7, 8]

2. 列表和元组存储方式的差异

测试代码:

l = [1, 2, 3]
a=l.__sizeof__()
print (a) #32

tup = (1, 2, 3)
b=tup.__sizeof__()
print (b) #24

3. 列表和元组的性能


4. 创建一个列表的方式有两种:list()和[],这两种的效率有什么区别?

区别主要在于list()是一个function call,Python的function call会创建stack,并且进行一系列参数检查的操作,比较expensive;
反观[]是一个内置的C函数,可以直接被调用,因此效率高。
类似于,C语言中的内联函数于普通函数调用的区别,内联函数。

内联函数类似于宏,如果编译器将这个函数当做内联函数来处理(内联函数只是建议编译器这样处理而已,而非一定),那么这个函数的代码在调用的地方展开,像宏定义一样。
所谓的速度更快是它省去了调用函数的一些开销,比如建立新的栈帧等。虽然这样确实减少了一定的时间开销,但是会造成函数代码的体积增大

上一篇 下一篇

猜你喜欢

热点阅读