tags: Python 基础 2019 年 10 月
内容说明:
字符串 1 2 3 4 5 a = 'string' a = "string" a = str () a = """ string """ a = 'this is %s' %('string' )
布尔类型
整数 变量 python 中检测某个变量是否有定义 参考链接:http://www.cnblogs.com/starspace/archive/2008/12/03/1347007.html
1 2 3 4 5 6 7 8 9 第一种方法: 'var' in locals ().keys()第二种方法: try : print var except NameError: print 'var not defined' 第三种方法: 'var' in dir ()
列表/元组 list/tuple 列表内置函数
list.append(obj) 在列表末尾添加新的对象
list.count(obj) 统计某个元素在列表中出现的次数
list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj) 从列表中找出某个值第一个匹配项的索引位置,索引从 0 开始
list.insert(index, obj) 将对象插入列表
list.pop(obj=list[-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj) 移除列表中某个值的第一个匹配项
list.reverse() 反向列表中元素,倒转
list.sort([func]) 对原列表进行排序
列表特性:
列表使用方括号[]
元组特性:
元组使用小括号()
元组的元素不能修改
元组中的元素值是不允许删除的,可以使用 del 语句来删除整个元组
创建空元祖tuple()
判断 list 列表是否包含 Flase 布尔值 any/all Python 内置函数 any(iterable)可以用来判断列表里是否存在元素可以使 bool(element)为 True
1 2 3 4 5 >>> l= [None , 1 , 0 ]>>> any (l)True >>> all (l)False
去除 list 重复值 myList = list(set(myList))
字典 字典(dictionary)是除列表之外 python 中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。 字典由键和对应的值组成。字典也被称作关联数组或哈希表。
字典的特性:
键必须不可变,键不能使用列表充当
键出现两次,仅保留后面的键值。
当访问不存在的键时报错 KeyError: ‘Alice’[/code]
字典基础语法 字典自带函数: Python 字典包含了以下内置函数: 1、cmp(dict1, dict2):比较两个字典元素。 2、len(dict):计算字典元素个数,即键的总数。 3、str(dict):输出字典可打印的字符串表示。 4、type(variable):返回输入的变量类型,如果变量是字典就返回字典类型。
Python 字典包含了以下内置方法:
radiansdict.clear():删除字典内所有元素
radiansdict.copy():返回一个字典的浅复制
radiansdict.fromkeys():创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
radiansdict.get(key, default=None):返回指定键的值,如果值不在字典中返回 default 值
radiansdict.has_key(key):如果键在字典 dict 里返回 true,否则返回 false
radiansdict.items():以列表返回可遍历的(键, 值) 元组数组
radiansdict.keys():以列表返回一个字典所有的键
radiansdict.setdefault(key, default=None):和 get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为 default
radiansdict.update(dict2):把字典 dict2 的键/值对更新到 dict 里
radiansdict.values():以列表返回字典中的所有值
cmp(dict1, dict2) 比较两个字典元素
len(dict) 计算字典元素个数,即键的总数。
str(dict) 输出字典可打印的字符串表示。
type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。
get 从字典中取值,当键不存在时不想处理异常
1 dics.get('key' , 'not found' )
setdefault 给字典添加一个条目。如果不存在,就指定特定的值;若存在,就算了。
1 dic.setdefault(key, default)
pop-删除字典值 从字典中取值,若找到则删除;当键不存在时不想处理异常
1 dics.pop('key' , '异常信息, not found' )
enumerate 用 enumerate 遍历下标
1 2 3 4 In [17 ]: dic = {'a' :'b' } In [20 ]: for index,key in enumerate (dic): ...: print index,key,dic[key] 0 a b
sort 排序 利用 sort 函数对字典进行 key 排序和 value 排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 字典实际上并不能排序,我们排的是items,即dict .items(),将字典转换成了一个列表 sorted 函数的原型为:sorted (iterable[, cmp[, key[, reverse]]])iterable:是可迭代类型类型; cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项; key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项; reverse:排序规则. reverse = True 或者 reverse = False ,有默认值。 返回值:是一个经过排序的可迭代类型,与iterable一样。 一般来说,cmp和key可以使用lambda 表达式。 常用的形式如下: sorted (dict .items(), key=lambda e:e[1 ], reverse=True )其中e表示dict .items()中的一个元素,e[1 ]则表示 按 值排序 如果把e[1 ]改成e[0 ],那么则是按键排序,reverse=False 可以省略 默认为升序排列 (1 )字典按key排序 sorted (dict .items(), key=lambda e:e[0 ], reverse=True )sorted (dict .keys())(2 )字典按value排序 sorted (dict .items(), key=lambda e:e[1 ], reverse=True )
Python 由 Value 取 Key 说明: _ 不同 key 同 value,转换中必然存在问题。 _ 不同方法不是完全可行的,仅仅做参考。
1 2 3 4 5 6 7 8 9 student = {'a' : '1' , 'b' : '1' , 'c' : 2 , 'd' : [1 , 2 ]} def get_key (dict , value ): return [k for k, v in dict .items() if v == value] In [37 ]: get_key(student,1 )Out[37 ]: [] In [38 ]: get_key(student,'1' )Out[38 ]: ['a' , 'b' ] In [39 ]: get_key(student,[1 ,2 ])Out[39 ]: ['d' ]
Python 字典根据 Value 顺序排序 sort_sum = sorted(sum_dic.items(),key=lambda item:item[1],reverse=False) [(‘北京’, 714), (‘上海’, 660),]
有序字典 1 2 from collections import OrderedDictdic = OrderedDict({str (i):i for i in range (10 )})
字典是无序的原因是因为,字典的 key-val 存储无需连续内存,可以存放在不连续的内存中。
当存取在连续内存时,取出是有序的,非连续内存时,取出是无序的。所以字典不是有序的。
另外 Python3 开始字典取出顺序和插入顺序一致。
对象随值变化 字典对象,随值变化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 In [55 ]: a;b Out[55 ]: {1 : 3 } In [56 ]: a={1 :3 };b=a In [57 ]: print a;print b {1 : 3 } {1 : 3 } In [58 ]: b.update({1 :3222 }) In [59 ]: print a;print b {1 : 3222 } {1 : 3222 }
嵌套对象,内部可变对象。随值变化
1 2 3 4 5 6 7 8 9 10 11 In [60 ]: a=(1 ,2 ,[1 ,2 ]);b=a In [61 ]: print a;print b (1 , 2 , [1 , 2 ]) (1 , 2 , [1 , 2 ]) In [62 ]: b[2 ][1 ] = 23123 In [63 ]: print a;print b (1 , 2 , [1 , 23123 ]) (1 , 2 , [1 , 23123 ])
日期和时间 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 9.1 、获取当前时间,例如:import time, datetime;localtime = time.localtime(time.time()) print "Local current time :" , localtime说明:time.struct_time(tm_year=2014 , tm_mon=3 , tm_mday=21 , tm_hour=15 , tm_min=13 , tm_sec=56 , tm_wday=4 , tm_yday=80 , tm_isdst=0 )属于struct_time元组,struct_time元组具有如下属性: 9.2 、获取格式化的时间可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime(): 2.1 、日期转换为字符串首选:print time.strftime('%Y-%m-%d %H:%M:%S' ); 其次:print datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S' ) 最后:print str (datetime.datetime.now())[:19 ] 2.2 、字符串转换为日期expire_time = "2013-05-21 09:50:35" d = datetime.datetime.strptime(expire_time,"%Y-%m-%d %H:%M:%S" ) print d;9.3 、获取日期差oneday = datetime.timedelta(days=1 ) today = datetime.date.today() yesterday = datetime.date.today() - oneday tomorrow = datetime.date.today() + oneday today_zero_time = datetime.datetime.strftime(today, '%Y-%m-%d %H:%M:%S' ) print datetime.timedelta(milliseconds=1 ), print datetime.timedelta(seconds=1 ), print datetime.timedelta(minutes=1 ), print datetime.timedelta(hours=1 ), print datetime.timedelta(days=1 ), print datetime.timedelta(weeks=1 )9.4 、获取时间差oneday = datetime.timedelta(days=1 ) today_time = datetime.datetime.now() yesterday_time = datetime.datetime.now() - oneday tomorrow_time = datetime.datetime.now() + oneday 注意时间是浮点数,带毫秒。 那么要获取当前时间,需要格式化一下: print datetime.datetime.strftime(today_time, '%Y-%m-%d %H:%M:%S' )print datetime.datetime.strftime(yesterday_time, '%Y-%m-%d %H:%M:%S' )print datetime.datetime.strftime(tomorrow_time, '%Y-%m-%d %H:%M:%S' )9.5 、获取上个月最后一天last_month_last_day = datetime.date(datetime.date.today().year,datetime.date.today().month,1 )-datetime.timedelta(1 ) 9.6 、字符串日期格式化为秒数,返回浮点类型:expire_time = "2013-05-21 09:50:35" d = datetime.datetime.strptime(expire_time,"%Y-%m-%d %H:%M:%S" ) time_sec_float = time.mktime(d.timetuple()) print time_sec_float9.7 、日期格式化为秒数,返回浮点类型:d = datetime.date.today() time_sec_float = time.mktime(d.timetuple()) print time_sec_float9.8 、秒数转字符串time_sec = time.time() print time.strftime("%Y-%m-%d %H:%M:%S" , time.localtime(time_sec))
其他 内置函数
int(x [,base]) 将 x 转换为一个整数
float(x ) 将 x 转换到一个浮点数
complex(real [,imag]) 创建一个复数
str(x) 将对象 x 转换为字符串
repr(x) 将对象 x 转换为表达式字符串
eval(str) 用来计算在字符串中的有效 Python 表达式,并返回一个对象
tuple(s) 将序列 s 转换为一个元组
list(s) 将序列 s 转换为一个列表
chr(x) 将一个整数转换为一个字符
unichr(x) 将一个整数转换为 Unicode 字符
ord(x) 将一个字符转换为它的整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串
数学函数
abs(x) 返回数字的绝对值,如 abs(-10) 返回 10
ceil(x) 返回数字的上入整数,如 math.ceil(4.1) 返回 5
cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
exp(x) 返回 e 的 x 次幂(ex),如 math.exp(1) 返回 2.718281828459045
fabs(x) 返回数字的绝对值,如 math.fabs(-10) 返回 10.0
floor(x) 返回数字的下舍整数,如 math.floor(4.9)返回 4
log(x) 如 math.log(math.e)返回 1.0,math.log(100,10)返回 2.0
log10(x) 返回以 10 为基数的 x 的对数,如 math.log10(100)返回 2.0
max(x1, x2,…) 返回给定参数的最大值,参数可以为序列。
min(x1, x2,…) 返回给定参数的最小值,参数可以为序列。
modf(x) 返回 x 的整数部分与小数部分,两部分的数值符号与 x 相同,整数部分以浮点型表示。
pow(x, y) x**y 运算后的值。
round(x [,n]) 返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。
sqrt(x) 返回数字 x 的平方根,数字可以为负数,返回类型为实数,如 math.sqrt(4)返回 2+0j
类型转换 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 函数 描述 2 int (x [,base ]) 将x转换为一个整数 3 long(x [,base ]) 将x转换为一个长整数 4 float (x ) 将x转换到一个浮点数 5 complex (real [,imag ]) 创建一个复数 6 str (x ) 将对象 x 转换为字符串 7 repr (x ) 将对象 x 转换为表达式字符串 8 eval (str ) 用来计算在字符串中的有效Python表达式,并返回一个对象 9 tuple (s ) 将序列 s 转换为一个元组 10 list (s ) 将序列 s 转换为一个列表11 chr (x ) 将一个整数转换为一个字符12 unichr(x ) 将一个整数转换为Unicode字符13 ord (x ) 将一个字符转换为它的整数值14 hex (x ) 将一个整数转换为一个十六进制字符串15 oct (x ) 将一个整数转换为一个八进制字符串
序列操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 操作 描述 2 s + r 序列连接 3 s * n , n * s s的 n 次拷贝,n为整数 4 s % d 字符串格式化(仅字符串) 5 s[i] 索引 6 s[i :j ] 切片 7 x in s , x not in s 从属关系 8 for x in s : 迭代 9 len (s) 长度 10 min (s) 最小元素11 max (s) 最大元素12 s[i ] = x 为s[i]重新赋值13 s[i :j ] = r 将列表片段重新赋值14 del s[i ] 删除列表中一个元素15 del s[i :j ] 删除列表中一个片段
数值操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 1 x << y 左移 2 x >> y 右移 3 x & y 按位与 4 x | y 按位或 5 x ^ y 按位异或 (exclusive or ) 6 ~x 按位翻转 7 x + y 加 8 x - y 减 9 x * y 乘 10 x / y 常规除11 x // y 地板除12 x ** y 乘方 (xy )13 x % y 取模 (x mod y )14 -x 改变操作数的符号位15 +x 什么也不做16 ~x ~x=-(x+1 )17 abs (x ) 绝对值18 divmod (x ,y ) 返回 (int (x / y ), x % y )19 pow (x ,y [,modulo ]) 返回 (x ** y ) x % modulo20 round (x ,[n]) 四舍五入,n为小数点位数21 x < y 小于22 x > y 大于23 x == y 等于24 x != y 不等于(与<>相同)25 x >= y 大于等于26 x <= y 小于等于