1. 文章
  2. 文章详情

python基础--序列

内置序列

  • 容器序列

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条)