资讯专栏INFORMATION COLUMN

python Sequence type

Ali_ / 1543人阅读

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

其实本来是要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:

str.join()或者写入io.StringIO

bytes.join()或者写入io.BytesIO或者使用可变的bytearray

使用list代替tuple

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37391.html

相关文章

  • Python源码理解: '+=' 和 'xx = xx + xx�

    摘要:前菜在我们使用的过程很多时候会用到运算例如输出不光在加法中使用在字符串的拼接也同样发挥这重要的作用例如输出同样的在列表中也能使用例如输出为什么上面不同的对象执行同一个会有不同的效果呢这就涉及到的重载然而这不是本文要讨论的重点上面的只是前菜而 前菜 在我们使用Python的过程, 很多时候会用到+运算, 例如: a = 1 + 2 print a # 输出 3 不光在加法中使用, 在...

    learning 评论0 收藏0
  • Python进阶:自定义对象实现切片功能

    摘要:以自定义字典为例仅作演示,不保证其它功能的完备性猫输出结果上例的关键点在于将字典的键值取出,并对键值的列表做切片处理,其妙处在于,不用担心索引越界和负数索引,将字典切片转换成了字典键值的切片,最终实现目的。 2018-12-31 更新声明:切片系列文章本是分三篇写成,现已合并成一篇。合并后,修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔接做了大量改动。原系列的单篇...

    yangrd 评论0 收藏0
  • Redis-py官方文档翻译

    摘要:采取两种实现命令其一类尽量坚持官方语法,但是以下除外没有实现,应该是线程安全的原因。线程安全性是线程安全的。由于线程安全原因,不提供实现,因为它会导致数据库的切换。 官网:https://github.com/andymccurd...当前版本:2.10.5注:这不是完整翻译,只提取了关键信息。省略了部分内容,如lua脚本支持。 pip install redis pip instal...

    Alfred 评论0 收藏0

发表评论

0条评论

Ali_

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<