内置序列
- 容器序列
list, tuple, collections.deque等这些序列能存放不同类型的数据,列表(list)是最基础最重要的序列类型
- 扁平序列
str, byte, bytearray, memoryview, array.array, 这些序列只能容纳一种类型数据
以上,容器序列存放的是他们所含任意类型对象的引用,而扁平序列存放的是值而不是引用
列表推导
>>> symbols = 'python学习'
>>> codes = [ord(symbol) for symbol in symbols]
列表推导由for循环变换而来,增强可读性的同时,也使得代码更加简洁
python会忽略代码里[]/()/{}中的换行,在其中可以省略续行符 "\"
生成器表达式
生成器的语法和列表推导差不多,只是把方括号换成圆括号
>>> symbols = 'python学习'
>>> tuple(ord(symbol) for symbol in symbols)
>>> import array
>>> array.array('I', (ord(symbol) for symbol in symbols))
(1) 如果生成器表达式是一个函数唯一的参数,那么这个参数不需要额外的括号
(2) array的构造方法需要两个参数,所以生成器表达式需要被括号围起来
list.sort方法和内置函数sorted
- list.sort 方法的功能是将序列就地排序,即不会重新创建一个数组,将原数组复制过来
- 与list.sort不同,序列的内置函数sorted的排序,会重新创建一个数组,不会对原数组做任何改动
>>> fruits = ['grape', 'respberry', 'apple', 'banana']
>>> sorted(fruits)
['apple', 'banana', 'grape', 'respberry']
>>> fruits
['grape', 'respberry', 'apple', 'banana']
>>> sorted(fruits, key=len)
['grape', 'apple', 'banana', 'respberry']
>>> sorted(fruits, key=len, reverse=True)
['respberry', 'banana', 'grape', 'apple']
>>> fruits
['grape', 'respberry', 'apple', 'banana']
>>> fruits.sort()
>>> fruits
['apple', 'banana', 'grape', 'respberry']sorted函数还接受key, reverse两个参数,其中,参数key表示比较的标准,而reverse表示是否要逆序(True)
利用bisect管理有序序列
利用bisect进行搜索
函数bisect(haystack, needle)可实现在haystack(干草堆,一个有序序列)中找到needle(针)的位置,该位置满足的条件是,把needle插入该函数所搜索到的位置后,整个haystack依然保持有序
评论列表(0条)