zoukankan      html  css  js  c++  java
  • 流畅的python和cookbook学习笔记(一)

    1.数据结构

    1.1 内置序列类型

      四种序列类型:

      1.容器序列:list、tuple和collections.deque

      2.扁平序列:str、bytes、bytearray、memoryview和array.array

      3.可变序列:list、bytearray、array.array、collections.deque 和 memoryview

      4.不可变序列:tuple、str 和 bytes

    1.2 列表推导

      1.列表推导(list comprehension):列表推导是构建列表(list)的快捷方式,简洁的写法。

      列表推导的作用只有一个:生成列表。

    >>> symbols = '$¢£¥€¤' 
    >>> codes = [ord(symbol) for symbol in symbols] # 用方括号括起来,内部用for循环生成多个值
    >>> codes
    [36, 162, 163, 165, 8364, 164]

      2.表达式内部的变量和赋值只在局部起作用,表达式的上下文里的同名变量还可以被正常引用,局部变量并不会影响到它们。

    >>> x = 'ABC' 
    >>> dummy = [ord(x) for x in x] 
    >>> x 
    'ABC' 
    >>> dummy  
    [65, 66, 67]

      即 x 的值不会被列表推导中的循环中的 x 值所影响。

    1.3 生成器表达式

      1.生成式表达器(generator expression):生成器表达式遵守了迭代器协议,可以逐个地产出元素,而不是先建立一个完整的列表,然后再把这个列表传递到某个构造函数里。这样更节省内存。

      生成器表达式的语法跟列表推导差不多,只不过把方括号换成圆括号而已。

      用生成器表达式初始化元组和数组:

    >>> symbols = '$¢£¥€¤' # 初始化元组
    >>> tuple(ord(symbol) for symbol in symbols) # 如果生成器表达式是一个函数调用过程中的唯一参数,那么不需要额外再用括号把它围起来。
    (36, 162, 163, 165, 8364, 164) 
    >>> import array # 初始化数组
    >>> array.array('I', (ord(symbol) for symbol in symbols)) # array 的构造方法需要两个参数,因此括号是必需的。array 构造方法的第一个参数,即('I')指定了数组中数字的存储方式。
    array('I', [36, 162, 163, 165, 8364, 164])

    1.4 笛卡尔积 

      笛卡儿积是一个列表,列表里的元素是由输入的可迭代类型的元素对构成的元组,因此笛卡儿积列表的长度等于输入变量的长度的乘积。

      1.使用列表推导计算笛卡儿积

    >>> 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')] >>> for color in colors: # 使用for循环是一样的效果 ... for size in sizes: ... print((color, size)) ... ('black', 'S') ('black', 'M') ('black', 'L') ('white', 'S') ('white', 'M') ('white', 'L') >>> tshirts = [(color, size) for size in sizes for color in colors] # 改变参数位置,输出顺序不同 >>> tshirts [('black', 'S'), ('white', 'S'), ('black', 'M'), ('white', 'M'), ('black', 'L'), ('white', 'L')]

      2.使用生成器表达式计算笛卡儿积

    >>> colors = ['black', 'white']
    >>> sizes = ['S', 'M', 'L']
    >>> for tshirt in ('{} {}'.format(c, s) for c in colors for s in sizes):
    ...     print(tshirt)
    ...
    black S
    black M
    black L
    white S
    white M
    white L
  • 相关阅读:
    atitit.组件化事件化的编程模型--服务端控件(1)---------服务端控件与标签的关系
    atitit. 浏览器插件 控件 applet 的部署,签名总结 浏览器 插件 控件 的签名安全机制o9o
    Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php
    atitit. applet 浏览器插件 控件 的环境,开发,提示总结o9o
    Atitit..文件上传组件选型and最佳实践总结(3)----断点续传控件的实现
    Atitit..文件上传组件选型and最佳实践总结(2)----断点续传
    Atitit.guice3 ioc 最佳实践 o9o
    Atitit. C# java 的api 目录封装结构映射总结
    atitit. 统计功能框架的最佳实践(1)---- on hibernate criteria
    Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按照子对象查询 o9o
  • 原文地址:https://www.cnblogs.com/zt19994/p/7424978.html
Copyright © 2011-2022 走看看