Python数据类型之“序列概述与基本序列类型(Bas(5)

key : 指定一个函数,该函数用于从每个列表元素提取用于进行比较操作的键,如key = str.lower。列表中每一个条目对应的键都会被计算一次,然后用于整个排序过程。默认值None表示列表条目将会被直接排序,而不会计算出一个单独的用于比较的键值。

reverse : 是一个布尔值,如果其值为True,则列表中的元素将会按照比较方法的反序进行排序。

说明:

sort()方法会直接修改list,这在对大列表进行排序时可以节约空间;该方法的副作用是不会返回排序后的list,可以使用sorted()显示请求一个新的排序后的list实例;

sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

sort()方法保证稳定性。如果能保证两个比较相当的元素不会改变相对位置,那么这个排序就是稳定的,这有助于通过多个条件进行排序,比如 先按部门排序,然后再按工资级别排序。

CPython实现细节:当一个列表正在被排序时,如果尝试修改或检测列表,效果是列表为定义。Python的C实现使得列表在持续时间内显示为空,并且如果它检测到列表在排序期间已发生改变,则会抛出ValueError错误。

>>> s = ['A', 'b', 'C', 'd', 'e'] >>> s.sort() >>> s ['A', 'C', 'b', 'd', 'e'] >>> s.sort(key=str.lower) >>> s ['A', 'b', 'C', 'd', 'e'] >>> s.sort(key=str.upper) >>> s ['A', 'b', 'C', 'd', 'e'] >>> s.sort(key=str.upper, reverse=True) >>> s ['e', 'd', 'C', 'b', 'A'] >>> s.sort(reverse=True) >>> s ['e', 'd', 'b', 'C', 'A'] >>> sorted(s) # sorted()可以对任何可迭代对象惊醒排序,不会对原数据进行修改且会返回一个排序后的实例 ['A', 'C', 'b', 'd', 'e'] >>> s ['e', 'd', 'b', 'C', 'A'] >>> 2.Tuple(元祖)

Tuple是不可变序列,通常用于存储异构数据集合,例如由内置函数enumerate()产生的2元组。元祖还用于同构数据的不可变序列的情况,例如允许在set或dict实例中存储。

tuple类构建函数 class tuple([iterable]) # 此处的方括号表示iterable是可选参数 tuple的构建方式

使用一对小括号表示空元组:()

对单个元组要使用逗号结尾:a, 或 (a, )

多个条目要使用逗号分隔:a, b, c 或 (a, b, c)

使用内置函数tuple() 或 tuple(iterable)

tuple构造函数tuple(iterable)会创建一个与可迭代对象iterable中的条目及条目顺序都相同的元祖。可迭代对象iterable可以是一个序列(sequence)、一个支持迭代操作的容器(container),也可以是一个迭代器对象(iterator object)。如果iterable已经是一个tuple,则直接返回这个tuple。如果没有指定参数,元组构造函数会创建一个新的空tuple, ()。

说明:

实际上,是逗号产生了一个元祖,而不是小括号。除了空元组的情形或者需要避免语法模糊的时候外,小括号是可选的。例如f(a, b, c)是具有3个参数的函数调用,而f((a, b, c))是以3元祖作为唯一参数的函数调用。

tuple创建示例 >>> 1, # 有逗号结尾表示元组 (1,) >>> (1, ) (1,) >>> 1 # 没逗号结尾表示数字 1 >>> (1) 1 >>> () # 空数组 () >>> tuple() () >>> tuple([1, 2, 4]) # 非空数组 (1, 2, 4) >>> 1, 2, 3 (1, 2, 3) >>> (1, 2, 3) (1, 2, 3)

tuple是不可变序列,它支持所有通用序列操作(与list一致,此处不再给出示例),但不支持可变序列操作。

3.range(范围)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/24d410b85e7f6a2f658f07e3275ec01d.html