zoukankan      html  css  js  c++  java
  • Python基础及语法(三)

    IPython使用

    IPython是增强的CPython,尤其是交互式体验。该项目提供了Jupyter Notebook,之后分离。

    提供帮助功能:

      ?:IPython概叙和简介

      help(name):查询指定名称的帮助。

      obj?:列出对象的详细帮助。

      obj??:如果可以,则列出更详细的帮助。

    特殊变量

    IPython内部提供了非常多的变量,或许能用到的如下:

      _:表示前一次输出

      __:表示倒数第二次输出

      ___:表示倒数第三次输出

      _dh:目录历史

      _oh:输出历史

    shell命令

    使用'!'+shell命令可执行当前系统shell的命令。

    魔术方法

    ‘%’:如%cd,改变当前工作目录,%pwd,显示当前目录,%ls,显示当前目录文件,%timeit,显示当前语句运行时间。

    '%%':如%%timeit,显示当前cell运行时间。%%js,当前cell运行js脚本。

    集合set

     集合,简称集,由任意个元素构成的集体。

    Python中,它是可变的,无序的,不重复的元素的集合。

    初始化

    1 s1 = set()
    2 s2 = set(range(5))
    3 s3 = set([1, 2, 3, 4, 5])
    4 s4 = set('abcabc')
    5 s5 = {1, 2, 3}

    元素性质

    去重:元素都是唯一值。

    无序:无序,不可索引。

    可哈希:元素必须可哈希。

    可迭代:元素可被迭代。

    1 s1 = set()
    2 s1.add(1)  # 把一个元素加入集合
    3 print(s1)  # {1}
    4 s1.update((2, 3), [4, 5])  # 把1组或多组可迭代对象加入集合
    5 print(s1)  # {1, 2, 3, 4, 5}

    1 s1 = set(range(5))
    2 s1.remove(1)  # 删除指定元素
    3 print(s1)  # {0, 2, 3, 4}
    4 s1.pop()  # 删除随机元素
    5 print(s1)
    6 s1.clear()  # 清空集合
    7 print(s1)  # set()

    集合没有修改,只能利用删除和增加达到效果。

     可以看出在集合查找元素会比列表快。set,dict利用哈希作为key,时间复杂度是O(1)。

    索引

    非线性结构,无序,不可被索引。

    遍历

    只要是容器皆可遍历,效率都是O(n)。

    集合概念

    全集:所有元素的集合。

    子集与超集:一个集合A的元素都在另一个集合B里,A是B的子集,B是A的超集。

    真子集与真超集:一个集合A的元素都在另一个集合B里,且A≠B,,A是B的真子集,B是A的真超集。

    并集:运算符号'|',多个集合合并的结果。

    交集:运算符号'&',两个集合A与B,同时属于A和B集合的元素集合为交集。

    差集:运算符号'-',两个集合A与B,属于A集合的元素且不属于B的元素集合为差集。

    对称差集:运算符号'^',两个集合A与B,只属于A集合的元素与只属于B集合的元素的集合为对称差集,等同于:(A|B)-(A&B)和(A-B)|(B-A)。

    1 s1 = set(range(5))
    2 s2 = set(range(3, 8))
    3 print(s1 | s2)  # {0, 1, 2, 3, 4, 5, 6, 7}
    4 print(s1 & s2)  # {3, 4}
    5 print(s1 - s2)  # {0, 1, 2}
    6 print(s1 ^ s2)  # {0, 1, 2, 5, 6, 7}
    7 print(s1 >= s2)  # False,判断S1是否为S2的超集,'<='判断'S1是否为S2的子集。
    8 s3 = set(range(3))
    9 print(s1 > s3)  # True,判断S1是否为S2的真超集,'<'判断'S1是否为S2的真子集

    字典dict

    Python中,字典由任意个元素构成的集合,每一个元素称为item,这个item由key与value组成的二元组。

    字典是可变的,无序的,key不重复的key-value键值对集合。

    注:Python3.6之后字典录入记录了录入顺序,这个特性建议暂时不要使用。如果需要有序的字典,建议使用collections.OrderedDict()

    初始化

    1 d1 = {}
    2 d2 = dict()
    3 d3 = dict(k1='v1', k2='v2')
    4 d4 = dict(d3)
    5 d5 = dict(d4, k3='v3')
    6 d6 = dict([('k1', 'v1'), ('k2', 'v2')], k2='v3', k3='v4')
    7 d7 = dict.fromkeys(range(5))
    8 d8 = dict.fromkeys(range(5), 0)

    增与改

    1 d = dict()
    2 d['k1'] = 'v1'
    3 print(d)  # {'k1': 'v1'}
    4 d.update(k2='v2')
    5 print(d)  # {'k1': 'v1', 'k2': 'v2'}
    6 d.update(k1='v3')
    7 print(d)  # {'k1': 'v3', 'k2': 'v2'}
    8 d['k2'] = 'v4'
    9 print(d)  # {'k1': 'v3', 'k2': 'v4'}

     1 d = dict.fromkeys(range(5))
     2 print(d)  # {0: None, 1: None, 2: None, 3: None, 4: None}
     3 d.pop(1)  # 删除key为1的item。
     4 print(d)  # {0: None, 2: None, 3: None, 4: None}
     5 d.pop(1, print('a'))  # a,没有找到key为1的item执行下面代码,不设定则返回keyError。
     6 print(d)  # {0: None, 2: None, 3: None, 4: None}
     7 d.popitem()  # 随机删掉一个item,没有则返回keyError。
     8 print(d)  # {0: None, 2: None, 3: None}
     9 d.clear()  # 清空字典
    10 print(d)  # {}

    1 d = dict.fromkeys(range(5), 0)
    2 print(d[1])  # 0,key存在返回value,不存在返回keyError。
    3 print(d.get(5))  # None,key存在返回value,不存在返回缺省值,没有缺省值返回None。
    4 print(d.setdefault(5), 'a')  # None a,key存在返回value,不存在创建item,value为缺省值,没有缺省值为None,并返回None和缺省值。

    遍历

    1 d = dict.fromkeys(range(3), 0)
    2 for i in d.values():  # 遍历value
    3     print(i)  # 0 0 0
    4 for i in d.keys():  # 遍历key
    5     print(i)  # 0 1 2
    6 for i in d:  # 等同于遍历key
    7     print(i)  # 0 1 2
    8 for k, v in d.items():  # 遍历item
    9     print(k, v)  # 0 0 1 0 2 0

    defaultdict

    1 from collections import defaultdict
    2 d = defaultdict(list)
    3 for k in bytes(range(0x41, 0x45)).decode():
    4     for v in range(3):
    5         d[k].append(v)
    6 print(d) #defaultdict(<class 'list'>, {'A': [0, 1, 2], 'B': [0, 1, 2], 'C': [0, 1, 2], 'D': [0, 1, 2]})

     封装和解构

    基本概念

    1 a, b = 1, 2
    2 print(a, b)  # 1 2

    Python会先把等号右边的元素封装成一个新的元组,然后解构后按顺序赋值给左边的元素。如果右边的元素不够或溢出均会返回ValueError。

    剩余变量结构

    1 s = list(range(5))
    2 a, *b, c = s
    3 print(a, b, c)  # 0 [1, 2, 3] 4

    使用'*',可以把溢出的部分全部接收。

    选择排序

     1 import random
     2 arr = random.choices(range(1, 101), k=20)
     3 print(arr)
     4 for i in range(len(arr)//2):
     5     is_min, is_max = i, i
     6     last = len(arr)-i-1
     7     for j in range(i+1, last+1):
     8         if arr[is_max] < arr[j]:
     9             is_max = j
    10         if arr[is_min] > arr[j]:
    11             is_min = j
    12     if is_max != last:
    13         if is_min == last:
    14             is_min = is_max
    15         arr[last], arr[is_max] = arr[is_max], arr[last]
    16     if is_min != i:
    17         arr[i], arr[is_min] = arr[is_min], arr[i]
    18 print(arr)
  • 相关阅读:
    Nginx log日志参数详解
    sea.js模块加载工具
    sea.js模块加载工具
    Airbnb React/JSX 编码规范
    4.2 react patterns(转)
    4.1 react 代码规范
    3.5 compose redux sages
    3.3 理解 Redux 中间件(转)
    3.4 redux 异步
    3.1 开始使用 redux
  • 原文地址:https://www.cnblogs.com/bgr1115/p/12626778.html
Copyright © 2011-2022 走看看