分类目录归档:python

树、森林、二叉树间的转换

1. 树和二叉树的转换

树到二叉树

二叉树到树

2. 森林和二叉树的转换

①森林到二叉树:

     将森林里的每棵树转换为二叉树;第一颗二叉树不动,依次把后一颗二叉树的根节点作为前一颗二叉树的根节点的右孩子,用线连接。

 ②二叉树到森岭:

将二叉树分离为多颗二叉树,再将每颗二叉树转换为树(步骤如 1)

正则表达式_入门

    1. 正则表达式_入门

    \d 一个数字
    \w 一个字母或数字
    \s 空格(包括tab等)
    . 任意字符
    + 至少一个字符
    ? 0或1个字符
    {n} n个字符
    {n,m} n-m个字符
     * 任意个字符
    [ ] 表示范围
    ^ 表示行的开头
    $ 表示行的结尾

    ②举个栗子

    \d{3}\s+\d{3,8}

    \d{3}三个数字

    \s+至少一个空格

    \d{3,8} 三到八个数字

    ③注意:

    如 – 等特殊字符,需用 \ 转义

    ⑤ 举个栗子:

    用[ ]表示范围

    [a-zA-Z\_][0-9a-zA-Z\_]*

    该栗子可以匹配由字母(大小写)或下划线开头,后面接任意个数字或字母或下划线的字符串,即python的合法变量

    (P/p)thon 可以匹配 Python 或 python

    ⑥注意:

    a.如 py 可以匹配 python ,如果加上 ^py$ 则只能匹配 py

    b.建议使用r

    ⑦.match()方法

    匹配返回True,否则为None

    ⑧切分字符串

    1. 优点:更灵活,排除不要的字符
    2. 举个栗子:

    >>> re.match(r’^(\d+?)(0*)$’, ‘102300’).groups()

    (‘1023′, ’00’)

    ⑨分组(提取字串)

    用( )表示要提取的分组Group

    如果在正则表达式式中定义了组,如:^(\d{3})-(\d{3,8})$  定义了两个组,

    则可以在Match对象上用group()方法提取出子串

    注意:

    group(0) 原始字符串
    group(1) 第一个子串
    group(2…..) 第二、三……个子串

    ⑩贪婪匹配(默认)

    即尽可能匹配多的,可加个?使其采用非贪婪匹配

    如:

    >>> re.match(r’^(\d+?)(0*)$’, ‘102300’).groups()

    >>>(‘1023′, ’00’)

    ⑩+1预编译

    如果一个正则表达式要重复使用上千次,可预编译该RP, 则接下来可直接匹配。对该预编译的对象,则可不用再给出RP

    >>> import re
    # 编译:
    >>> re_telephone = re.compile(r’^(\d{3})-(\d{3,8})$’)
    # 使用:
    >>> re_telephone.match(‘010-12345’).groups()
    (‘010’, ‘12345’)

  1. 有点困,睡觉了😴