zoukankan      html  css  js  c++  java
  • Python-01基础-11基础知识

    Python 基础知识

    tags: Python 基础 2019 年 10 月

    内容说明:

    • 变量
    • 列表/元组
    • 字典
    • 数据转换

    字符串

    a = 'string'
    a = "string"
    a = str()
    a = """ string """
    a = 'this is %s'%('string')
    

    布尔类型

    True or False
    

    整数

    变量

    python 中检测某个变量是否有定义

    参考链接:http://www.cnblogs.com/starspace/archive/2008/12/03/1347007.html

    第一种方法:
    'var' in locals().keys()
    第二种方法:
    try:
        print var
    except NameError:
        print 'var not defined'
    第三种方法:
    'var' in dir()
    

    列表/元组 list/tuple

    列表内置函数

    1. list.append(obj) 在列表末尾添加新的对象
    2. list.count(obj) 统计某个元素在列表中出现的次数
    3. list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
    4. list.index(obj) 从列表中找出某个值第一个匹配项的索引位置,索引从 0 开始
    5. list.insert(index, obj) 将对象插入列表
    6. list.pop(obj=list[-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
    7. list.remove(obj) 移除列表中某个值的第一个匹配项
    8. list.reverse() 反向列表中元素,倒转
    9. list.sort([func]) 对原列表进行排序

    列表特性:

    1. 列表使用方括号[]

    元组特性:

    1. 元组使用小括号()
    2. 元组的元素不能修改
    3. 元组中的元素值是不允许删除的,可以使用 del 语句来删除整个元组
    4. 创建空元祖tuple()

    判断 list 列表是否包含 Flase 布尔值 any/all

    Python 内置函数 any(iterable)可以用来判断列表里是否存在元素可以使 bool(element)为 True

    >>> l= [None, 1, 0]
    >>> any(l)
    True
    >>> all(l)
    False
    

    去除 list 重复值

    myList = list(set(myList))

    字典

    字典(dictionary)是除列表之外 python 中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
    字典由键和对应的值组成。字典也被称作关联数组或哈希表。

    字典的特性:

    1. 键必须不可变,键不能使用列表充当
    2. 键出现两次,仅保留后面的键值。
    3. 当访问不存在的键时报错 KeyError: ‘Alice’[/code]

    字典基础语法

    字典自带函数:
    Python 字典包含了以下内置函数:
    1、cmp(dict1, dict2):比较两个字典元素。
    2、len(dict):计算字典元素个数,即键的总数。
    3、str(dict):输出字典可打印的字符串表示。
    4、type(variable):返回输入的变量类型,如果变量是字典就返回字典类型。

    Python 字典包含了以下内置方法:

    1. radiansdict.clear():删除字典内所有元素
    2. radiansdict.copy():返回一个字典的浅复制
    3. radiansdict.fromkeys():创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
    4. radiansdict.get(key, default=None):返回指定键的值,如果值不在字典中返回 default 值
    5. radiansdict.has_key(key):如果键在字典 dict 里返回 true,否则返回 false
    6. radiansdict.items():以列表返回可遍历的(键, 值) 元组数组
    7. radiansdict.keys():以列表返回一个字典所有的键
    8. radiansdict.setdefault(key, default=None):和 get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为 default
    9. radiansdict.update(dict2):把字典 dict2 的键/值对更新到 dict 里
    10. radiansdict.values():以列表返回字典中的所有值
    11. cmp(dict1, dict2) 比较两个字典元素
    12. len(dict) 计算字典元素个数,即键的总数。
    13. str(dict) 输出字典可打印的字符串表示。
    14. type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。

    get

    从字典中取值,当键不存在时不想处理异常

    dics.get('key', 'not found')
    

    setdefault

    给字典添加一个条目。如果不存在,就指定特定的值;若存在,就算了。

    dic.setdefault(key, default)
    

    pop-删除字典值

    从字典中取值,若找到则删除;当键不存在时不想处理异常

    dics.pop('key', '异常信息, not found')
    

    enumerate

    用 enumerate 遍历下标

    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 排序

    字典实际上并不能排序,我们排的是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)#e[0]表示按key排序,e[1]表示按拍value排序。reverse=True表示倒序排列
    
    sorted(dict.keys())#得到一个按大小排序的key列表
    (2)字典按value排序
    sorted(dict.items(), key=lambda e:e[1], reverse=True)#e[1]表示按value排序
    

    Python 由 Value 取 Key

    说明:
    _ 不同 key 同 value,转换中必然存在问题。
    _ 不同方法不是完全可行的,仅仅做参考。

    # 测试数据
    student = {'a': '1', 'b': '1', 'c': 2, 'd': [1, 2]}
    # 方法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),]

    有序字典

    from collections import OrderedDict
    dic = OrderedDict({str(i):i for i in range(10)})
    

    TODO 为什么字典按照插入顺序, 显示字典值?

    对象随值变化

    字典对象,随值变化

    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}
    

    嵌套对象,内部可变对象。随值变化

    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])
    

    日期和时间

    9.1、获取当前时间,例如:import time, datetime;
    
    localtime = time.localtime(time.time())
    #Local current time : 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)
    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)
    #今天,2014-03-21
    today = datetime.date.today()
    #昨天,2014-03-20
    yesterday = datetime.date.today() - oneday
    #明天,2014-03-22
    tomorrow = datetime.date.today() + oneday
    #获取今天零点的时间,2014-03-21 00:00:00
    today_zero_time = datetime.datetime.strftime(today, '%Y-%m-%d %H:%M:%S')
    
    #0:00:00.001000
    print datetime.timedelta(milliseconds=1), #1毫秒
    #0:00:01
    print datetime.timedelta(seconds=1), #1秒
    #0:01:00
    print datetime.timedelta(minutes=1), #1分钟
    #1:00:00
    print datetime.timedelta(hours=1), #1小时
    #1 day, 0:00:00
    print datetime.timedelta(days=1), #1天
    #7 days, 0:00:00
    print datetime.timedelta(weeks=1)
    
    9.4、获取时间差
    
    
    
    
    #1 day, 0:00:00
    oneday = datetime.timedelta(days=1)
    #今天,2014-03-21 16:07:23.943000
    today_time = datetime.datetime.now()
    #昨天,2014-03-20 16:07:23.943000
    yesterday_time = datetime.datetime.now() - oneday
    #明天,2014-03-22 16:07:23.943000
    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_float
    9.7、日期格式化为秒数,返回浮点类型:
    
    
    
    d = datetime.date.today()
    time_sec_float = time.mktime(d.timetuple())
    print time_sec_float
    9.8、秒数转字符串
    
    
    
    time_sec = time.time()
    print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time_sec))
    

    其他

    内置函数

    1. int(x [,base]) 将 x 转换为一个整数
    2. float(x ) 将 x 转换到一个浮点数
    3. complex(real [,imag]) 创建一个复数
    4. str(x) 将对象 x 转换为字符串
    5. repr(x) 将对象 x 转换为表达式字符串
    6. eval(str) 用来计算在字符串中的有效 Python 表达式,并返回一个对象
    7. tuple(s) 将序列 s 转换为一个元组
    8. list(s) 将序列 s 转换为一个列表
    9. chr(x) 将一个整数转换为一个字符
    10. unichr(x) 将一个整数转换为 Unicode 字符
    11. ord(x) 将一个字符转换为它的整数值
    12. hex(x) 将一个整数转换为一个十六进制字符串
    13. oct(x) 将一个整数转换为一个八进制字符串

    数学函数

    1. abs(x) 返回数字的绝对值,如 abs(-10) 返回 10
    2. ceil(x) 返回数字的上入整数,如 math.ceil(4.1) 返回 5
    3. cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
    4. exp(x) 返回 e 的 x 次幂(ex),如 math.exp(1) 返回 2.718281828459045
    5. fabs(x) 返回数字的绝对值,如 math.fabs(-10) 返回 10.0
    6. floor(x) 返回数字的下舍整数,如 math.floor(4.9)返回 4
    7. log(x) 如 math.log(math.e)返回 1.0,math.log(100,10)返回 2.0
    8. log10(x) 返回以 10 为基数的 x 的对数,如 math.log10(100)返回 2.0
    9. max(x1, x2,…) 返回给定参数的最大值,参数可以为序列。
    10. min(x1, x2,…) 返回给定参数的最小值,参数可以为序列。
    11. modf(x) 返回 x 的整数部分与小数部分,两部分的数值符号与 x 相同,整数部分以浮点型表示。
    12. pow(x, y) x**y 运算后的值。
    13. round(x [,n]) 返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。
    14. sqrt(x) 返回数字 x 的平方根,数字可以为负数,返回类型为实数,如 math.sqrt(4)返回 2+0j

    类型转换

     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 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 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 % modulo
    20 round(x ,[n])           四舍五入,n为小数点位数
    21 x < y                   小于
    22 x > y                   大于
    23 x == y                  等于
    24 x != y                  不等于(<>相同)
    25 x >= y                  大于等于
    26 x <= y                  小于等于
    
  • 相关阅读:
    AAC音频格式分析与解码
    SIGPIPE信号
    可变参数的宏定义
    Makefile条件编译debug版和release版
    Linux下查看内存使用情况
    Trie树 字典树
    C/C++随机数生成 rand() srand()
    关于编译安装Thrift找不到libthriftnb.a的问题
    Linux下使用popen()执行shell命令
    WebSocket协议分析
  • 原文地址:https://www.cnblogs.com/superscfan/p/12256987.html
Copyright © 2011-2022 走看看