美文网首页
排列、组合、生成器、正则表达式

排列、组合、生成器、正则表达式

作者: 夏威夷的芒果 | 来源:发表于2018-11-14 22:07 被阅读23次

    从 n 个不同元素中取出 m (m <n)个元素,按照一定的顺序排成一列,叫做从 n 个元素中取出 m 个元素的一个排列(Arrangement)。
    特别地,当 m=n 时,这个排列被称作全排列(Permutation)

    import itertools
    
    mylist=list(itertools.permutations([1,2,3,4],2))  #有序地,4个里面取出来2个
    print(mylist)
    print(len (mylist))
    

    运行结果

    [(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]
    12
    
    import itertools
    mylist=list(itertools.combinations([1,2,3,4],2))     #无序地,4个里面取出来2
    print(mylist)
    print(len (mylist))
    

    运行结果

    [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
    6
    
    • 密码组合尝试


    使用生成器可以减小内存。

    正则表达式

    概述、match函数

    search函数

    findall函数

    匹配单个字符与数字

    锚字符、边界字符

    匹配多个字符

    切分字符串

    finditer函数

    sub的字符串替换修改

    match和分组

    编译减小重编译成本

    常见的正则形式:

    • QQ
    re_qq= re.compile(r"\d{5,10}$") 
    print(re_qq.match("8765432"))
    
    • 邮件
    #字母开头、中间是任意字母数字或者下划线
    re_ mail = re.compile(r"^\w(_|\w)*@\w+\.\w{1,3}$")
    print (re_ mail.search ("a_12@qq.com"'))
    

    手机

    re_mobile = re.compile(r"^1[34578]\d{9}$")
    print(re_mobile.search("13765765432"))
    

    座机

    re_phone = re.compile(r"^0[1-9]\d{1,2}-\d{8}$")
    print(re_phone.search("010-12343673"))
    

    用户名

    #0-15位字母数字
    re_user = re.compile(r"^[a-zA-Z][a-zA-Z0-9]{0,15}$") 
    print(re_user.search("sunck"))
    

    密码

    re_passwd = re.compile(r"^[a-zA-Z0-9].{5,15}$")
    print(re_passwd.search("1fjiehf&%^"))
    

    生日

    re_birthday = re.compile(r"^((18\d{2})|(19\d{2})|(20[0-1]\d))-(1[0-2]|0[1-9])-([0][1-9]|[1-2][0-9]|3[0-1])$") 
    print(re_birthday.search("1813-09-12"))
    

    IP地址

    re_ip = re.compile(r"^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$") 
    print(re_ip.search("1.4.34.34"))
    

    相关文章

      网友评论

          本文标题:排列、组合、生成器、正则表达式

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