Day27

 

1、collections

默认字典最大的好处就是永远不会在你使用key获取值的时候报错

默认字典是给字典中的value设置默认值

# 默认字典
# 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],
# 将所有大于 66 的值保存至字典的第一个key中,
# 将小于 66 的值保存至第二个key的值中。
dic={}
l=[11,22,33,44,55,66,77,88,99,90]
for i in l:
    if i>66:
        if dic.get('k1'):
            dic['k1'].append(i)
        else:
            dic['k1']=[i]
    elif i<66:
        if dic.get('k2'):
            dic['k2'].append(i)
        else:
            dic['k2']=[i]
print(dic)
from collections import defaultdict
d = defaultdict(list)
l = [11,22,33,44,55,66,77,88,99,90]
for i in l:
    if i>66:
        d['k1'].append(i)
    elif i<66:
        d['k2'].append(i)

print(d)
View Code
from collections import defaultdict
d=defaultdict(set)
print(d)
print(d['a'])
d['b']=10
print(d)
View Code
{}默认的value是5
from collections import defaultdict
d=defaultdict(lambda :5)
print(d[1])
print(d)
View Code
from collections import Counter
c = Counter('abcdeabcdabcaba')
print(c)
View Code
class Configparser:
    def __init__(self,section,option):
        self.section = section
        self.option = option
    def write(self,f):
        f.write(self.section,self.option)

f = open('test','w')
config = Configparser('a','b')
config.write(f)
View Code

2、time模块

记录时间的格式:

  给人看的

  给机器看的

  计算用的

时间戳时间:给机器看的

print(time.time())

格式化时间:给人看的

%y 两位数的年份表示(00-99%Y 四位数的年份表示(000-9999%m 月份(01-12%d 月内中的一天(0-31%H 24小时制小时数(0-23%I 12小时制小时数(01-12%M 分钟数(00=59%S 秒(00-59%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
View Code

print(time.strftime('%Y-%m-%d %H:%M%S'))  字符串格式化时间

结构化时间

索引(Index)

属性(Attribute)

值(Values)

0

tm_year(年)

比如2011

1

tm_mon(月)

1 - 12

2

tm_mday(日)

1 - 31

3

tm_hour(时)

0 - 23

4

tm_min(分)

0 - 59

5

tm_sec(秒)

0 - 60

6

tm_wday(weekday)

0 - 6(0表示周一)

7

tm_yday(一年中的第几天)

1 - 366

8

tm_isdst(是否是夏令时)

默认为0

 

#时间元组:localtime将一个时间戳转换为当前时区的struct_time

time.localtime()

time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24,           

tm_hour=13, tm_min=59, tm_sec=37, tm_wday=0, tm_yday=205, tm_isdst=0)

几种格式之间的转换

 

#时间戳-->结构化时间
#time.gmtime(时间戳)    #UTC时间,与英国伦敦当地时间一致
#time.localtime(时间戳) #当地时间。例如我们现在在北京执行这个方法:与UTC时间相差8小时,UTC时间+8小时 = 北京时间 
>>>time.gmtime(1500000000)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=2, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
>>>time.localtime(1500000000)
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)

#结构化时间-->时间戳 
#time.mktime(结构化时间)
>>>time_tuple = time.localtime(1500000000)
>>>time.mktime(time_tuple)
1500000000.0
View Code
#结构化时间-->字符串时间
#time.strftime("格式定义","结构化时间")  结构化时间参数若不传,则现实当前时间
>>>time.strftime("%Y-%m-%d %X")
'2017-07-24 14:55:36'
>>>time.strftime("%Y-%m-%d",time.localtime(1500000000))
'2017-07-14'

#字符串时间-->结构化时间
#time.strptime(时间字符串,字符串对应格式)
>>>time.strptime("2017-03-16","%Y-%m-%d")
time.struct_time(tm_year=2017, tm_mon=3, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=75, tm_isdst=-1)
>>>time.strptime("07/24/2017","%m/%d/%Y")
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=205, tm_isdst=-1)
View Code

#结构化时间 --> %a %b %d %H:%M:%S %Y串
#time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串
>>>time.asctime(time.localtime(1500000000))
'Fri Jul 14 10:40:00 2017'
>>>time.asctime()
'Mon Jul 24 15:18:33 2017'

#时间戳 --> %a %d %d %H:%M:%S %Y串
#time.ctime(时间戳)  如果不传参数,直接返回当前时间的格式化串
>>>time.ctime()
'Mon Jul 24 15:19:07 2017'
>>>time.ctime(1500000000)
'Fri Jul 14 10:40:00 2017' 
View Code

3、random模块

>>> import random
#随机小数
>>> random.random()      # 大于0且小于1之间的小数
0.7664338663654585
>>> random.uniform(1,3) #大于1小于3的小数
1.6270147180533838
#发红包

#随机整数
>>> random.randint(1,5)  # 大于等于1且小于等于5之间的整数
>>> random.randrange(1,10,2) # 大于等于1且小于10之间的奇数


#随机选择一个返回
>>> random.choice([1,'23',[4,5]])  # #1或者23或者[4,5]
#随机选择多个返回,返回的个数为函数的第二个参数
>>> random.sample([1,'23',[4,5]],2) # #列表元素任意2个组合
[[4, 5], '23']


#打乱列表顺序
>>> item=[1,3,5,7,9]
>>> random.shuffle(item) # 打乱次序
>>> item
[5, 1, 3, 7, 9]
>>> random.shuffle(item)
>>> item
[5, 9, 7, 1, 3]
View Code

4、sys模块

sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1)
sys.version 获取Python解释程序的版本信息
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称

import sys
print('*'*6)
sys.exit()      #退出程序,正常退出时exit(0),错误退出sys.exit(1)
print('-'*6)
View Code

内存
程序在运行起来的时候
启动解释器 加载一些基础的内容 内置函数 内置模块 -->内存里
sys.path 系统的路径 import
import os,sys

import sys
if sys.argv[1]=='aelx' and sys.argv[2]=='3714':
    print('登陆成功')
else:
    sys.exit()
View Code
# 执行一个程序
# debug
# 直接执行
import sys 
import logging
inp=sys.argv[1] if len(sys.argv)>1 else 'WARNING'
logging.basicConfig(level=getattr(logging,inp))    #DEBUG
num=int(input('>>>'))
logging.debug(num)
a=num*100
logging.debug(a)
b=a-10
logging.debug(b)
c=b+5
print(c)
View Code

 

posted @ 2018-04-24 16:17  Gentleman王  阅读(103)  评论(0编辑  收藏  举报