Python进阶(十)----规范化格式目录, time模块, datatime模块,random模块,collection模块(python额外数据类型)

Python进阶(十)----规范化格式目录, time模块, datatime模块,random模块,collection模块(python额外数据类型)

一丶规范化格式目录

六个目录:

#### 对某某项目进行一个标准化的开发,进行规范化.
#bin   : 启动项目程序的主入口

#conf  : 项目的配置文件

#core  : 主要逻辑(业务逻辑)

#db    : 存放数据()

#lib   : 辅助文件(存放公共的一些方法)

#README : 项目文档说明

?

二丶time模块(时间模块)

时间的三种方式:

? 1.时间戳 ,用于计时 (始于1970年,Unix的诞生.)

? 2.格式化时间 ,

? 3.元组结构化时间, 元组则是用来操作时间的.(作为一种中间介质,用于转换)

### 1.时间戳    ,从1970年到现在的一个时间戳,秒为单位
    print(time.time())

### 2.格式化时间
    # 字符串类型 ,参数 :%Y-%m-%d %H:%M:%S  ,不能包含Unicode的编码
    print(time.strftime('%Y-%m-%d %H:%M:%S'))

    #不能包含Unicode的编码
    print(time.strftime('%Y{}%m{}%d{} %H:%M:%S').format('年','月','日'))

### 3.结构化时间
    print(time.localtime())

### 时间转换
    # 时间戳转换成结构化时间
    ret=time.time()         # 时间戳
    st_time=time.localtime(ret) # 时间戳转换成 结构化时间
    print(st_time)

    # 结构化时间转换成格式化时间
    ft=time.strftime('%Y-%m-%d',st_time)  # 将结构化时间转换成格式化时间
    print(ft)

    # 格式化时间转换成结构化时间,
    ft=time.strftime('%Y-%m-%d %H:%M:%S')   # 格式化时间.
    st=time.strptime(ft,'%Y-%m-%d %H:%M:%S')  # 格式化时间转换成 结构化时间,
    print(st)

    # 结构化时间转换成时间戳,
    timestamp=time.mktime(st)  #  结构化时间转换成时间戳
    print(timestamp)

时间转换如下图??:

时间测试题:

## 突发奇想:  算一算 从1970到2019-06-28现在一共同多少天
    count=0
    for i in range(1970,2019):
        ret=time.strptime(f'{i}-12-31','%Y-%m-%d')
        count+=int(ret.tm_yday)
    res=time.strptime('2019-06-28','%Y-%m-%d')
    print(res)
    print(res.tm_yday+count)

##  用户输入一个格式化的时间如:2019-06-28,给返回这一天在这一年中是第几天
    def user_time(times_us):
        ret = time.strptime(times_us,'%Y-%m-%d')
        return ret.tm_yday
    print(user_time(input('请输入年-月-日:>>').strip()))

## 计算博客园园龄
    # 将指定时间转换成时间戳
    bok_time='2019-05-20 00:00:00'
    #先转换成结构化时间,在由结构化时间转换成时间戳
    t2=time.mktime(time.strptime(bok_time,'%Y-%m-%d %H:%M:%S'))

    create_time=now_time-t2   # 获得一个时间戳.当前时间戳 - 创建时的时间戳

    # gmtime(sec)  计算 从1970时间 到现在已经过了多少时间函数将一个时间戳转换为UTC时区(0时区)的struct_time,可选的参数sec表示从1970-1-1以来的秒数。(返回结构tm 代表目前UTC 时间。)

    # localtime() 是格式本地当前时间,(会把差值+时区一起算)(返回结构tm 代表目前的当地时间)

    time_struct=time.gmtime(create_time)
    print(f'现在已经过去了{time_struct.tm_year-1970}年,{time_struct.tm_mon-1}月,{time_struct.tm_mday-1}天,{time_struct.tm_hour}小时,{time_struct.tm_min}分,{time_struct.tm_sec}秒,夏令时:{time_struct.tm_isdst}')

三丶datatime模块(时间模块)

import datetime

### 现在的时间
now_datetime=datetime.datetime.now()
print(now_datetime)  # 2019-06-28 15:29:38.478080

### 在当前时间上,为其增减时间(时,分,秒,天,周)
now_time=datetime.datetime.now()
# 现在的时间加上增删的时间
print(now_time+datetime.timedelta(weeks=3))  # 三周后
print(now_time+datetime.timedelta(weeks=-3)) # 三周前

### 指定调整 年月日时分秒等
now_time2=datetime.datetime.now()
print(now_time2.replace(year=1949))  # 指定年
print(now_time2.replace(year=1997,month=11,day=16,hour=12,minute=0,second=0))  # 指定年 , 月, 日

### 将时间戳转换成格式化时间
print(datetime.date.fromtimestamp(3125456312))

四丶random模块(生成随机数)

import  random

# 获得一个 大于0,且小于1 ,随机小数
print(random.random())

# 1到7之间, 随机小数
print(random.uniform(1,7))

# 随机整数     顾头也顾尾
print(random.randint(1,5))

# 随机切片  顾头不顾尾
print(random.randrange(1,10,2))

# 随机选择一个返回
print(random.choice([1,'22',3,4]))

# 随机选择多个
print(random.sample([1,2,3,4,5,6,7]))

# 打乱列表次序
item=[i for i  in range(10)]
random.shuffle(item)  # 对原列表 打乱顺序
print(item)

五丶collection模块

额外的Counter,deque,defaultdict,namedtuple,OrderedDict数据类型

### 内置数据类型 (dict, list,set ,tuple) 基础上: Counter,deque,defaultdict,namedtuple和OrderedDict等

# 1.namedtuple: 生成可以使用名字来访问元素内容的tuple 元组
    from collections import namedtuple
    # 表示一个二维坐标点
    Point=namedtuple('Point',['X','Y'])
    p=Point(1,2)
    print(p.X,p.Y)

    #坐标和半径表示一个圆
    Circle = namedtuple('Circle', ['x', 'y', 'r'])
    c=Circle(1,2,3)

### 2.deque: 双端队列,可以快速的从另外一侧追加和推出对象 ,
    # list 插入和删除元素慢,是线性存储,数据量大的时候,插入和删除效率很低。
    #了高效实现插入和删除操作的双向列表,适合用于队列和栈:
    from collections import  deque
    q=deque(['a','b','c'])
    q.append('x')  # 末尾插入
    q.appendleft('y') # 列头插入
    print(q.pop())   # 默认删除末尾元素,并返回删除元素
    print(q.popleft()) # 默认删除头元素
    print(q)

### 3.Counter: 计数器,主要用来计数    ###很吊!!!!
    # 它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。
    # 计数值可以是任意的Interger(包括0和负数)。
    # Counter类和其他语言的bags或multisets很相似。
    import random
    from collections import Counter
    c=Counter('nopqrsydefgst')
    print(c)

    num_li=[random.randint(1,20) for  i in range(20)]
    c2=Counter(num_li)
    print(c2)

# 4.OrderedDict: 有序字典
    from collections import OrderedDict
    d=dict([('e', 2), ('b', 2), ('c', 3)]) # 字典推导式  将可迭代对象默认循环得到一个元组,
    print(d)
    od = OrderedDict([('e', 1), ('b', 2), ('c', 3)])
    print(od)
    od['z'] = 1  # 添加元素  只会往末尾添加
    od['x'] = 2  #
    od['y'] = 3  #
    print(od,type(od))
    print(od.keys())

### 5.defaultdict: 带有默认值的字典
    # 放置数据类型作为字典的值类型
        from collections import defaultdict
        values = [11, 22, 33,44,55,66,77,88,99,90]
        my_dict = defaultdict(list)
        for value in  values:
            if value>66:
                my_dict['k1'].append(value)
            else:
                my_dict['k2'].append(value)
        print(my_dict)

    # 当键不存在 执行lambda 函数
    from collections import  defaultdict
    dd=defaultdict(lambda :'N/A')
    dd['key1']='abc'
    print(dd)
    print(dd['key1'])
    print(dd['key2']) # key2不存在,返回默认值 'N/A'

原文地址:https://www.cnblogs.com/dengl/p/11104952.html

时间: 2024-10-10 23:09:16

Python进阶(十)----规范化格式目录, time模块, datatime模块,random模块,collection模块(python额外数据类型)的相关文章

Python进阶(十二)----re模块

Python进阶(十二)----re模块 一丶re模块 ? re模块是python将正则表达式封装之后的一个模块.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行. #正则表达式: 从一串字符中,找出你想要的字符串. import re ### 单个元字符的匹配 # \W 除了数字 ,字母,中文, 下划线 print(re.findall('\W','dsadas1231 +1-+2*/,.')) # \w 匹配中文,数字,字母,下划线 print(re.findall('\w

python进阶十_正则表达式(一)

最近状态一直不太好,至于原因,怎么说呢,不好说,总之就是纠结中覆盖着纠结,心思完全不在点上,希望可以借助Python的学习以及博客的撰写来调整回来,有的时候回头想一想,如果真的是我自己的问题呢,以前我经常跟别人说,千万不要怀疑自己,因为很清楚一旦连自己都变的不可信,那这个世界就太疯狂了,当一遍一遍的问我,现在连我自己都快怀疑自己了,我一遍一遍的说服别人,想不到现在竟然需要自己去说服自己,何其的悲哀~ 一.正则表达式基础 1.基本概念 正则表达式是计算机科学的一个概念.正则表达式使用单个字符串来描

Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理)

Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理) 一丶封装 , 多态 封装: ? ? ? ? ? ?将一些东西封装到一个地方,你还可以取出来 ? ? ? ? ? ?类设置静态属性, 设置一些方法 或者 对象, 对象可以在其对象封装一些属性 多态: ? ? ? ? ? ?python默认支持多态, 多态指的是一种事务具有多种形态 ? ? ? ? ? ?1.多态可以增加代码的灵活度: ? ? ? ? ? ?2.以继承和重写父类方法为前提: ?

python进阶十_正則表達式(一)

近期状态一直不太好,至于原因.怎么说呢,不好说,总之就是纠结中覆盖着纠结.心思全然不在点上.希望能够借助Python的学习以及博客的撰写来调整回来,有的时候回头想一想.假设真的是我自己的问题呢,曾经我常常跟别人说,千万不要怀疑自己.由于非常清楚一旦连自己都变的不可信.那这个世界就太疯狂了,当一遍一遍的问我,如今连我自己都快怀疑自己了,我一遍一遍的说服别人,想不到如今居然须要自己去说服自己,何其的悲哀~ 一.正則表達式基础 1.基本概念 正則表達式是计算机科学的一个概念.正則表達式使用单个字符串来

【Python进阶】03、python多版本管理工具pyenv

一.pyenv介绍         CentOS6系统会自带一个较低版本的python,一般不使用系统自带的python版本,因为系统很多组件依赖于python比如yum,如果我们随意升级或者安装了些有冲突包可能会影响系统环境:我们需要再安装较高版本的python,而且在开发多个项目时,可能需要多个版本的Python,此时在进行Python版本切换时会比较麻烦,pyenv就提供了一种简单的方式. pyenv是一个能简易地在多个Python版本中进行切换的工具,它简单而优雅. 项目地址:https

Python 进阶_生成器 & 生成器表达式

目录 目录 相关知识点 生成器 生成器 fab 的执行过程 生成器和迭代器的区别 生成器的优势 加强的生成器特性 生成器表达式 生成器表达式样例 小结 相关知识点 Python 进阶_迭代器 & 列表解析 生成器 带有 yield 关键字的的函数在 Python 中被称之为 generator(生成器).Python 解释器会将带有 yield 关键字的函数视为一个 generator 来处理.一个函数或者子程序都只能 return 一次,但是一个生成器能暂停执行并返回一个中间的结果 -- 这就

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据

Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据 ??matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. ??它的文档相当完备,并且 Gallery页面 中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定. ??在Linux下比较著名的数据图工具还有gnuplot

Python进阶之模块

在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Module). 使用模块有什么好处? 最大的好处是大大提高了代码的可维护性.其次,编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们在编写程序的时候,也经常引用其他模块,包括Python内置的模

Python进阶(九)----os,sys,hashlib模块

Python进阶(九)----os,sys,hashlib模块 一丶序列化模块 什么是序列化: ? 将一种数据结构,转换成一个特殊的序列(特殊字符串,用于网络传输,或文件保存) ? 真正的意义:变量从内存中变成可存储或传输的过程称之为序列化 json模块: ? 是所有语言公认的一种序列,最常用,支持的数据结构有限:"list(tuple), int .str ,bool,None,float." ### dumps ,loads : 主要网络传输 , 用于文件的读取. import j