从 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和分组
编译减小重编译成本
常见的正则形式:
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"))
网友评论