详解Python3中的Sequence type的使用

yipeiwu_com6年前Python基础

其实本来是要reverse一下list的,就去查了一下list[::-1]是什么意思,发现还有很多要注意的地方,所以就记一下。
主要是参照https://docs.python.org/3/library/stdtypes.html?highlight=list#list

首先Sequence type有三种

  1.     list
  2.     tuple
  3.     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:

相关文章

PHP webshell检查工具 python实现代码

1.使用方法:find.py 目录名称 2. 主要是采用python正则表达式来匹配的,可以在keywords中添加自己定义的正则,格式: ["eval\(\$\_POST","发现PH...

Python下opencv图像阈值处理的使用笔记

Python下opencv图像阈值处理的使用笔记

图像的阈值处理一般使得图像的像素值更单一、图像更简单。阈值可以分为全局性质的阈值,也可以分为局部性质的阈值,可以是单阈值的也可以是多阈值的。当然阈值越多是越复杂的。下面将介绍opencv...

利用python代码写的12306订票代码

本文实例讲述了python代码写的12306订票代码,分享给大家供大家参考。 具体实现方法如下: import datetime import json import re impo...

Python数据类型之String字符串实例详解

本文实例讲述了Python数据类型之String字符串。分享给大家供大家参考,具体如下: String(字符串) 1、概述 字符串是以单引号或双引号括起来的任意文本,比如"abc",‘x...

详解Python 字符串相似性的几种度量方法

字符串的相似性比较应用场合很多,像拼写纠错、文本去重、上下文相似性等。 评价字符串相似度最常见的办法就是:把一个字符串通过插入、删除或替换这样的编辑操作,变成另外一个字符串,所需要的最少...