python学习记录
调试
import pdb pdb.set_trace()
注释
#单行注释 """ 多行注释 """ ''' 多行注释 '''
判断变量类型
a="测试" print(type(a))
三目表达式、if else if else语句
#输入变量 a = int(input()) #三目表达式 print("大于2" if(a > 2) else "小于2") #if else if else语句 print("大于2" if(a > 2) else "等于2" if(a == 2) else "小于2")
多行字符串
# 反斜杠 \ test1 = "select * from table \ where id=1" # 双引号 """""" test2 = """select * from table where id=1""" # 单引号 '''''' test3 = '''select * from table where id =1''' # 字符串分为多行("") test4 = ("select * from table" "where id=1")
翻转
#函数 testa=[1,2,3,4,5] testa.reverse() print(testa) #切片 print(testa[::-1]) #循环 for x in reversed([9,8,7,6]): print(x)
创建字典
#1.直接初始化 a = {"a":1,"b":2,"c":2} #2.指定关键字 b = dict(a=1,b=2,c=3) #3.映射 c = dict([('a',1),('b',2),('c',3)]) #4.迭代器 d = dict(zip(['a','b','c'],[1,2,3]))
运算符
print(3/2)#/返回浮点型 print(3//2)#//返回整型 print(3**2)#乘方(3的2次方) print("重要的事情说三遍!"*3)#*遇到除数字以外的类型(字符串、列表、元组),都是代表重复几遍的意思
集合、字典合并
#集合 s1={1,2,3,"ce"} s2={4,5,6} print(s1 | s2) #字典 d1 = {"v1": 22, "v2": 33} d2 = {"v2": 44, "v3": 55} print({**d1, **d2})
判断是否为父类的子类
print(issubclass(bool,int))#bool是int的子类,可进行相加
时间
#格式化时间 import time print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) #获取今天、昨天、明天 import datetime today = datetime.date.today()#今天 print(today - datetime.timedelta(days=1))#昨天 print(today + datetime.timedelta(days=1))#明天 #格式化时间 from datetime import datetime print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
序列化
import json data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ] print(json.dumps(data))#将对象转为json字符串 print(json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': ')))#将对象转为json字符串,格式化输出
反序列化
编码:# coding:utf-8、# coding=gbk、# -*- coding: utf-8 -*-、# coding:utf-8
import json jsonStr = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; print(json.loads(jsonStr))#将json字符串转为对象
(交、并、差、补)集
a = set('hi') b = set('hollo') print(a&b)#交集 print(a|b)#并集 print(a-b)#差集(在a,不在b) print(b-a)#差集(在b,不在a) print(a^b)#补集(两种差集的并集)
遍历
#遍历字典 a = {"name":"peter","age":18,"luckynum":[1,2]} for x,y in a.items(): print(x,y) #遍历元组(通过枚举) b = "perter",18,[1,2] for x,y in enumerate(b): print(x,y) #遍历更多序列 c = ['c1', 'c2', 'c3'] d = 'd1', 'd2', 'd3' for x, y in zip(c, d): print('{0},{1}'.format(x, y)) #迭代器遍历 list=["abc",2,[88,9.5]] it = iter(list)#创建迭代器对象 for x in it: print (x)
统计元素出现次数(有点类似group by 获取count(*))
num = list('hello world') #方式一 print(num.count('h'))#获取数字h出现的次数 print(num.index('l'))#获取数字l首次出现的索引 #方式二 from collections import Counter c=Counter(num) print(c)#每个元素出现的次数 print(c.most_common())#转为列表 print(c.most_common(1))#数字代表输出项数
连接join
names = ["john", "sara", "jim", "rock"] print("、 ".join(names))
排序
#列表 names = ["rs", "dz", "zy", "ed"] #方式一 print(sorted(names)) #方式二 names.sort() print(names) #字典 d = { "v1": 80, "v2": 20, "v3": 40, "v4": 20, "v5": 10, } from operator import itemgetter sorted1 = dict(sorted(d.items(), key=itemgetter(1))) #倒序 #sorted2 = dict(sorted(d.items(), key=itemgetter(1), reverse=True)) print(sorted1) #方式二 sorted3 = dict(sorted(d.items(), key=lambda item: item[1])) print(sorted3)
推导式
#元组 touple = 1,2,3,4,5,6 #转为字典 dict = {x:y for x,y in enumerate(touple)} print(dict) #转为集合 set = {x for x in touple} print(set) #转为列表 list = [x for x in touple if x > 3] print(list)
*和**
#①.星号写在函数参数前为【可变长参数列表】 #单星号(*)元组输入;双星号(**)需要指定参数名称,字典输入 def fun_test(id,*args,**kw): print("id:{0}".format(id)) for x,y in enumerate(args): print("x={0},y={1}".format(x,y)) for x in kw: print("{0}:{1}".format(x,kw[x])) #调用 fun_test(8023,1,24,"测试",name="张三",age=24,sex="男") #②_①.星号写在调用函数参数前为【解压参数列表】 def fun_test1(id, name): print("id:{0}".format(id)) print("name:{0}".format(name)) #调用 fun_test1(*[1, "测试"]) #②_② def fun_test2(id, name): print("id:{0}".format(id)) print("name:{0}".format(name)) #调用 fun_test2(**{"id": 1, "name": "张三"})
大小写
str = "hi Lily,how are you!" print(str.lower())#转小写 print(str.upper())#转大写 print(str.capitalize())#首字母大写,其它小写 print(str.title())#每个单词的首字母大写,其它小写
Map和Lambda
#1.原始 def fun_test(args): result = [] for x in args: result.append(x ** 3) return result #调用 print(fun_test([1,2,3])) #2.Lambda stupid_func = (lambda x : x ** 3) print([stupid_func(1), stupid_func(2), stupid_func(3)]) #3.Lambda+Map print(list(map(lambda x : x ** 3, [1, 2, 3])))
format
print("{0}{1}{2}".format(1,2,3))#数字占位(索引从0开始) print("{}{}{}".format(1,2,3))#符号占位 print("{c}{b}{d}".format(c=1,b=2,d=3))#字母占位
uuid(随机数)
import uuid print(uuid.uuid4())
%s
str = "Lily" print("%s" % str)#完整输出 print("%5s" % str)#原字符串长度小于5,在左边补空格;超过5个字符,则输出原字符串 print("%-5s" % str + "为了看空格")#原字符串长度小于5,在右边补空格;超过5个字符,则输出原字符串 print("%.3s" % str)#截取原字符串的三个字符,如果字符串长度小于截取长度,那么原样输出(从左往右截取) print("%10.3s" % str)#.的右边代表截取长度,左边代表补全长度
救命!!!我还是不习惯python的语法,习惯性的打;,习惯性的按tab,习惯性的格式化代码。