python中quadratic什么意思_详解Python3中的Sequence type的使用

其实本来是要reverse一下list的,就去查了一下list[::-1]是什么意思,发现还有很多要注意的地方,所以就记一下。

主要是参照https://docs.python.org/3/library/stdtypes.html?highlight=list#list

首先Sequence type有三种 list tuple range

slice

[i:j:k]表示的是slice of s from i to j with step k, 对三种类型都有用 >>> a = [1, 2, 3]

>>> a[::-1]

[3, 2, 1]

>>> a = (1, 2, 3)

>>> a[::-1]

(3, 2, 1)

>>> a = range(3)

>>> a[::-1]

range(2, -1, -1)

range中参数是range(start, stop[, step])

initialize a list

s * n表示的是n shallow copies of s concatenated

注意是浅拷贝哦,所以会有如下情况 >>> lists = [[]] * 3

>>> lists

[[], [], []]

>>> lists[0].append(3)

>>> lists

[[3], [3], [3]]

如果元素不是对象的话就没关系 >>> lists = [0] * 3

>>> lists

[0, 0, 0]

>>> lists[0] = 1

>>> lists

[1, 0, 0]

正确的初始化嵌套list的方法应该是 >>> lists = [[] for i in range(3)]

>>> lists[0].append(3)

>>> lists[1].append(5)

>>> lists[2].append(7)

>>> lists

[[3], [5], [7]]

concatenation pitfall

(感觉还是英文说的清楚些,这一点跟Java是一样的)

Concatenating immutable sequences always results in a new object. This means that building up a sequence by repeated concatenation will have a quadratic runtime cost in the total sequence length. To get a linear runtime cost, you must switch to one of the alternatives below:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值