整合自网络及 python菜鸟网站。
简单语句
array[row][col]
:array二维列表显示
while 判断条件:
执行语句
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
else:
执行语句4……
for i in array:
...
range(start, stop, step)
:start默认是从 0 开始。step默认为1。
Python 运算符
布尔值取反 flag = not flag
判断长度,取整数等
len(A)
:二维列表行数
len(A[0])
:二维列表列数
len(A[i])
:多维列表第i维(行)的长度(列数)
str.count(sub, start= 0,end=len(string))
:统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
list.count(obj)
:统计某个元素在列表中出现的次数。
取整:
1.向上取整 0 = math.ceil(-0.5)
, 1 = math.ceil(0.3)
2.向下取整(整数商) -1 = math.floor(-0.3)
,0 = math.floor(0.9)
/ (-1) // 2
3.四舍五入取整 2 = round(-1.5)
4.向0取整 int(-0.5)
取整方向总是让结果比小数的绝对值更小
取余:
7 % 4 = 3(商 = 1 或 2,1<2,取商=1)
-7 % 4 = 1(商 = -1 或 -2,-2<-1,取商=-2)
7 % -4 = -1(商 = -1或-2,-2<-1,取商=-2)
-7% -4 = -3(商 = 1或2,1<2,取商=1)
幂运算2**n
返回error return -1
double和float类型判断为零:
1.低版本:
def isclose(a, b, rel_tol=1e-09, abs_tol=0.0):
return abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
2.>Python 3.5: math.isclose
进制转换:
int("0xa",16)
:将16进制字符串转换为10进制
>>> int("0xa",16)
10
# 获取用户输入十进制数
dec = int(input("输入数字:")) #5
print("十进制数为:", dec) #5
print("转换为二进制为:", bin(dec)) #"0b101" 字符串
print("转换为八进制为:", oct(dec)) #"0o5"
print("转换为十六进制为:", hex(dec)) #"0x5"
list(map(int,input().split()))
:{‘45’,‘56’}转换为int的列表[45.56]
sys.stdin.readline().
用法
input()
函数接受一个标准输入数据,返回为 string 类型。
import sys
try:
while True:
print('Please input a number:')
n = int(sys.stdin.readline().strip('\n')) #strip('\n')表示以\n分隔,否则输出是“字符串+\n”的形式
print('Please input some numbers:')
sn = sys.stdin.readline().strip()#若是多输入,strip()默认是以空格分隔,返回一个包含多个字符串的list。
if sn == '':
break
sn = list(map(int,sn.split())) #如果要强制转换成int等类型,可以调用map()函数。
print(n)
print(sn,'\n')
except:
pass
集合
set()
函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
>>> x = set('runoob')
>>> y = set('google')
>>> x, y
({'b', 'r', 'u', 'o', 'n'}, {'e', 'o', 'g', 'l'}) # 重复的被删除
>>> x & y # 交集
{'o'}
>>> x | y # 并集
{'b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'}
>>> x - y # 差集
{'r', 'b', 'u', 'n'}
注意:创建一个空集合必须用set()
而不是{ }
,因为{ }
是用来创建一个空字典。
set.add()
方法用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。
字符串
str[::-1]
:逆序输出
str.replace(old, new, max)
:
把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
注意:replace 不会改变原字符串的内容。
str.split(str="", num=string.count(str))
:
指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串(使用num个分隔符)。分隔符包括空格、换行(\n)、制表符(\t)等。
举例:
str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( ); # 以空格为分隔符,包含 \n
print str.split(' ', 1 ); # 以空格为分隔符,分隔成两个
输出:
[‘Line1-abcdef’, ‘Line2-abc’, ‘Line4-abcd’]
[‘Line1-abcdef’, ‘\nLine2-abc \nLine4-abcd’]
str.join(sequence)
:
将序列中的元素以指定的字符连接生成一个新的字符串。
举例1:
str = "-";
seq = ("a", "b", "c"); # 字符串序列
print str.join( seq );
输出:a-b-c
举例2:
''.join(c if c!=' ' else '%20' for c in s)
举例3:
" ".join(map(str,res)) + " "
:将整数数组拼接成字符串。
举例4:
"".join(str)
使字符串{"1","2"}
转换为"12"
,与+
作用相同。
str = "4"
str += "3" -->"43"
`str.strip() `
用于移除字符串头尾指定的字符(默认为空格)或字符序列。
```python
str = "*****this is **string** example....wow!!!*****"
print (str.strip( '*' )) # 指定字符串 *
输出:this is ** string ** example…wow!!!
str.count()
方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
str.count(sub, start= 0,end=len(string))
str.startswith()
方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False,直接用str[0]
当字符串为空时存在越界。
str.isdigit()
方法检测字符串是否只由数字组成
str.islower()
方法检测字符串是否由小写字母组成。
str.isupper()
方法检测字符串是否由大写字母组成。
str.lower()
转换字符串中所有大写字符为小写。
ord()
函数是 chr()
函数(对于 8 位的 ASCII 字符串)的配对函数,它以一个字符串(Unicode 字符)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值。
>>>ord('a')
97
>>> ord('€')
8364
>>>
chr()
用一个整数作参数,返回一个对应的字符。
列表
max(map(max,dp))
:取二维数组dp中的最大值
list.append(obj)
:在列表末尾添加一个新的对象。
list.extend(seq)
:在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
insert(index, obj)
函数用于将指定对象插入列表的指定位置。
判断列表是否为空
if len(mylist):
或者 if mylist:
或者 if mylist is None
逆序输出
1.mylist[::-1]
2.mylist.reverse()
链表结构
list.pop([index=-1])
:移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
list1 = ['Google', 'Runoob', 'Taobao']
list_pop=list1.pop(1)
print "删除的项为 :", list_pop
print "列表现在为 : ", list1
#结果
删除的项为 : Runoob
列表现在为 : ['Google', 'Taobao']
初始化二维数组(a,b)
c = [[0]*5 for _ in range(5)]
或 c = [[0 for _ in range(5)] for _ in range(5)]
不能用c = [[0]*5 ]*5
原因
list.sort()
对已存在的列表进行操作,调用其没有返回值;
sorted(a)
函数是返回一个新的list,不在原来的list上进行操作,调用其返回一个排好序的新的list。
sorted(a, key=len, reverse=True)
使用lambda应对各种复杂情况的排序,包括list嵌套dict
内置函数sorted的10个小tips
sorted()
按照字典序排序
python字典排序 关于sort()、reversed()、sorted()
字典
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name']) --> Runoob
print ("dict['Age']: ", dict['Age']) --> 7
defaultdict
当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值
from collections import defaultdict
dict1 = defaultdict(int) #输出:0
dict2 = defaultdict(set) #输出:set()
dict3 = defaultdict(str) #输出: #(空字符串)
dict4 = defaultdict(list) #输出:[]
key in dic
:检测key是否存在
dict = {‘Name’: ‘Runoob’, ‘Age’: 7}
# 检测键 Age 是否存在
if 'Age' in dict:
print("键 Age 存在")
else :
print("键 Age 不存在")
正则表达式re
正则化
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
re.search('[0-9]',str)
扫描整个字符串并返回第一个成功的匹配。
队列
Python 队列(Queue)用法
双边队列:
q = queue.deque()
q.append(123)
q.append(456)
q.appendleft(780)
print(q)
print(q.pop())
print(q.popleft())
-----------------------------
deque([780, 123, 456])
456
780
直接引用。
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。
判断是深拷贝还是浅拷贝,只要测试下在b有子对象时,看看修改a子对象时,b子对象是不是也修改了
图解Python深拷贝和浅拷贝
对于list而言
直接引用 a=b
a与b引用同一个地址
浅拷贝 a=b[:]
a与b引用不同的地址