列表
1、将列表中的字符型数字转换为数值类型
1 | lis = ['1', '2', '3', '8', '6', '12'] |
2、将列表中的数字转换为字符(同上)
1 | lis = [1, 2, 3, 8, 6, 12] |
3、对列表中的元素进行排序
- 如果列表中是数字,那么直接进行排序:
1 | lis = [1, 2, 3, 8, 6, 12] |
- 如果列表中是字母型字符,那么也直接进行排序(根据ASCII):
1 | lis = ['a', 'd', 'e', 'b'] |
- 如果列表中是数字型字符,想要使其中的数字升序或者降序排列,需要对其进行一些操作:
1 | #若直接进行排序 |
注意:上述排序是按元素的第一个字符进行排序的。
1 | lis = ['1', '2', '3', '8', '6', '12'] |
4、Python 输出时去掉列表或者元组外面的方括号与圆括号
可以是使用join()函数来实现:
‘x’.join(y),x可以是任意分割字符,y是列表或元组。以列表为例,可以将列表中的每一个元素两头的引号给去
除,同时,元素与元素之间以字符‘x’作为分割标志,并且列表最外面的中括号也能去除掉。元组同理。
1 | lis = ['1', '2', '3', '8', '6', '12'] |
注意:join()函数只能用于字符,不能用于数值类型。
5、列表的去重和排序
先将一个列表转换为set集合, 再转换为list列表,即可完成去重。
- 若列表元素为数字,则既可以去重也可以排序:
1 | lis = [1, 2, 3, 12, 8, 6, 3] |
- 若列表元素为字符,则只可以去重不可以排序,顺序为随机排列:
1 | lis = ['1', '2', '3', '8', '6', '12', '3'] |
字典
- python字典以键值对的形式存储,且键一般是唯一的,如果重复,则最后的一个键值对会替换前面的,值不需要唯一。
- 值可以取任何数据类型,但键必须是不可变的(字符串,数字,元组)。
删除字典元素
1 | dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} |
遍历字典元素
1 | dic= {'Name': 'Zara', 'Age': 7, 'Class': 'First'} |
其他方法
序号 | 函数及描述 |
---|---|
1 | dict.has_key(key) 如果键在字典dict里返回true,否则返回false |
2 | dict.update(dict2) 把字典dict2的键/值对更新到dict里 |
3 | dict.get(key) 返回指定键的值,如果值不在字典中返回default值 |
4 | dict.update(dict2) 把字典dict2的键/值对更新到dict里 |
5 | pop(key,default) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
数值处理
1、python向上取整,向下取整,四舍五入
1 | import math |
2、输出规定数位的小数
1 | #结果保留两位小数 |
3、输出多个相同的值
1 | #输出3个python |
4、函数有任意多个参数
将函数的参数定义为*n,n可以看作一个列表,接收实际参数。
例如定义一个函数multi()可以传入任意个参数,返回这些参数的乘积:
1 | def multi(*n): |
将函数的参数定义为**n,n可以看作一个字典,接收实际参数。
1 | def dictionary(**n): |
循环输入
怎么样能使while循环和input输入结合起来形成循环输入呢?python不能像C语言那样直接实现
1 | while(scanf("%d%d", &a,&b) != EOF) |
在python中,无法通过input()的返回值判断是否有EOF。python是通过抓取异常来知EOF的,于是,通过try except的方法,当出现except的时候,就是到了EOF,这时退出循环。
1 | while True : |
1 | while True : |
注意:引起异常的并不是input()本身,而是紧跟在input()函数后调用输入值的语句:print(x+y)和print(int(l[0])+int(l[1])),因为当不从键盘上输入值即input()函数返回None时,后面的语句调用输入值时发生错误从而引发异常。若将print(x+y)和print(int(l[0])+int(l[1]))语句删去,将形成无限循环输入。
在此附上一个例子:
进行两个集合的合并,并且没有重复元素且升序排列。
输入:若干组,每组包括三行,第一行输入两个数字,分别为两个集合的元素个数;第二行和第三行分别为两个集合。
输出:若干组,每组一行,为合并后的集合。
1 | result = [] |
结果为:
时间格式转换
导入包:
1 | from time import datetime |
datetime格式转换为字符串:
1 | time = datetime.now() |
字符串转换为datetime格式
1 | str = "2020-8-1" |
正则表达式
导入
1 | import re |
使用
re.match函数
re.match
尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
1 | re.match(pattern, string, flags=0) |
该函数返回一个match
对象(如果匹配失败,返回None),如果想要得到匹配到的字符串。可以使用group()
函数或groups()
函数。
匹配对象方法 | 描述 |
---|---|
group(num=0) | 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。 |
groups() | 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。 |
例如:
1 | import re |
re.search函数
re.search
扫描整个字符串并返回第一个成功的匹配。
1 | re.match(pattern, string, flags=0) |
re.sub函数
Python 的 re 模块提供了re.sub
用于替换字符串中的匹配项。
1 | re.sub(pattern, repl, string, count=0, flags=0) |
例如:
1 | import re |
re.compile函数
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
1 | re.compile(pattern, flags) |
例如:
1 | import re |
findall函数
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
1 | findall(string, pos, endpos) |
例如:
1 | import re |
输出结果:
1 | ['123', '456'] |
正则表达式对象
re.RegexObject
re.compile()
返回 RegexObject 对象。
re.MatchObject
group()
返回被 RE 匹配的字符串start()
返回匹配开始的位置end()
返回匹配结束的位置span()
返回一个元组包含匹配 (开始,结束) 的位置
replace替换字符串
Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
1 | str.replace(old, new, max) |
返回值:返回字符串中的 old(旧字符串) 替换成 new(新字符串)后生成的新字符串。
例如:
1 | string = "hello world!" |
全局变量
在python中,假设x是一个全局变量,那么在一个函数内(该函数未定义局部变量x)使用类似x += 1
、x = max(x, 0)
等语句时,会报错:UnboundLocalError: local variable ‘x’ referenced before assignment
例如:
1 | x = 0 |
解决方法:在函数中使用该全局变量前用globle
进行声明即可
1 | x = 0 |
未完待续······