美文网首页
序列构成的数组

序列构成的数组

作者: 钢笔先生 | 来源:发表于2019-08-02 18:43 被阅读0次

Time: 2019-08-02
书籍: 《流畅的Python》

数据火车:文本,列表,表格。

Python处理序列数据的方式是统一的风格,无论是哪种数据结构:

  • 字符串
  • 列表
  • 字符串
  • 字节序列
  • 数组
  • XML元素
  • 数据库查询结果

在Python中都可以共用一套操作:

  • 迭代
  • 切片
  • 排序
  • 拼接

在Python这里,标准库中的序列类型有:

  • 容器类序列

    • list
    • tuple
    • collections.deque
  • 扁平序列

    • str
    • bytes
    • bytearray
    • memoryview
    • array.array

其中,扁平序列只能容纳一种类型,且存放的是,容器序列可以存放任意类型的对象的引用

从可变性角度划分

  • 可变序列

    • list
    • bytearray
    • array.array
    • collections.deque
    • memoryview
  • 不可变序列

    • tuple
    • str
    • bytes

其中,list是最重要、最基础的序列类型,这是个可变序列,可同时存放不同类型的元素。

接下来复习列表推导功能。

列表推导(list comprehension)

这是一种构建列表的方法。

掌握列表推导是通往生成器表达式(generator expression)的必经之路。

列表推导使用案例:

symbols = 'abcdefg'
codes = [ord(symbol) for symbol in symbols]

使用原则:只用列表推导来创建新的列表,并保持简短。若超过了两行,可以考虑用for循环。

列表推导与filter,map的比较

symbols = 'acfjlmopq'
beyond_ascii = [ord(s) for s in symbols if ord(s) > 100]

beyond_ascii = list(filter(lambda c: c > 127, map(ord, symbols)))

双重循环生成笛卡尔积案例

# 双重循环
colors = ['black', 'white']
sizes = ['S', 'M', 'L']

tshirts = [(color, size) for color in colors for size in sizes]
tshirts 
'''
[('black', 'S'),
 ('black', 'M'),
 ('black', 'L'),
 ('white', 'S'),
 ('white', 'M'),
 ('white', 'L')]
'''

生成器表达式

生成器表达式遵守迭代器协议,可以逐个产出元素,不是先建立一个完整的列表。

所以生成器表达式方式还可以节省内存。

重点来了:生成器表达式的语法是把列表推导中的方括号变成圆括号。

symbols = 'åœ∑®©†¥˙'
tuple(ord(symbol) for symbol in symbols)
# (229, 339, 8721, 174, 169, 8224, 165, 729)

元组

元组不仅仅是不可变的列表,还可以用作:

  • 记录
  • 元组拆包
  • 具名元组:collections.namedtuple()

END.

相关文章

  • 序列构成的数组

    本章讨论的内容几乎可以应用到所有的序列类型上,从list, 到 Python3 特有的 str 和 bytes. ...

  • 序列构成的数组

    Time: 2019-08-02书籍: 《流畅的Python》 数据火车:文本,列表,表格。 Python处理序列...

  • 流畅的python

    2、序列构成的数组 2.1、内置序列的类型 容器序列list, tuple, collections.deque ...

  • 1007 Maximum Subsequence Sum (25

    简单动态规划。以为尾的序列的最大序列和迭代更新的同时顺便用一个数组记录那些构成最大序列和的序列的左端点。

  • 第二章 序列构成的数组

    列表推导列表推导的原则:只用列表推导来创建新的列表,并尽量保持简短。如果代码超过了两行,就要考虑用for循环重写了...

  • 04-数组

    数组 php的数组十分特殊,确切的说,它是由键值对构成的数组,就类似于C++的map,但是仍然可以用不带键的序列去...

  • 第二章:序列构成数组

    2.1 内置序列类型概览 容器序列:存放的是它们所包含的任意类型的对象的引用list、tuple、和collect...

  • 深入理解数组:底层实现探究

    数组的协议结构 序列 -> 集合 -> 可以做区间替换的集合 -> 数组 Sequence 序列 一个序列(Seq...

  • IOS 算法(中级篇) ----- 最长递增子序列

    给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组...

  • 【071】《故事》读书笔记(6)

    10、场景设计、分析和布局谋篇 幕由序列构成,序列由场景构成,场景由节拍构成。幕设计的前提的场景设计。场景设计由转...

网友评论

      本文标题:序列构成的数组

      本文链接:https://www.haomeiwen.com/subject/mawldctx.html