zoukankan      html  css  js  c++  java
  • Python数据类型介绍(二)

    1、数据类型之元组

    1.1、什么是元组?

    元组是python中最基本的数据结构,与列表类似,它是一个有序序列,序列中的每个元素都分配一个数字(位置、索引)。

    ①我们可以使用圆括号,小括号()来创建元组;

    ②我们可以直接将序列放在tuple(seq);

    列表和元组的最本质区别,格式基本一致,元组的item不可修改。

    列表创建:

    nums = (1,2,3,4,5)

    letters = tuple("abc")

    1.2、访问元组中的数据

    列表是有序的序列,存在下标index。

    索引从0开始;

    索引支持负数;

    1.3、常用操作

    1.3.1、元组数据组合

    t1 = (1,2,3)
    t2 = tuple("abcdef")
    print(t1+t2)

    输出结果为:

    (1, 2, 3, 'a', 'b', 'c', 'd', 'e', 'f')

    1.3.2、元组数据重复

    t1 = (1,2,3)
    t2 = tuple("abcdef")
    print((t1+t2)*3)

    输出结果为:

    (1, 2, 3, 'a', 'b', 'c', 'd', 'e', 'f', 1, 2, 3, 'a', 'b', 'c', 'd', 'e', 'f', 1, 2, 3, 'a', 'b', 'c', 'd', 'e', 'f')

    1.3.3、元组与列表转换

    l1 = [1, 2, 3, 4]
    print(l1)
    t3 = tuple(l1)
    print(t3)
    l2 = list(t3)
    print(l2)

    输出结果为:

    [1, 2, 3, 4]
    (1, 2, 3, 4)
    [1, 2, 3, 4]

    1.4、元组方法

    1.4.1、len() 函数计算元组元素个数。

    t1 = (1,2,3)
    print(len(t1))

    输出结果为:

    3

    1.4.2、 max() 函数返回元组中元素最大值(作比较的元素需保持数据类型一致)。

    t2 = tuple("abcdef")
    print(max(t2))

    输出结果为:

    f

    1.4.3、min()函数返回元组中元素的最小值。

    t1 = (1,2,3)
    print(min(t1))

    输出结果为:

    1

    2、数据类型之字典

    2.1、什么是字典

    字典是python中的数据结构,是一种可变容器模型,可存储任意类型对象。

    字典以键值对存储数据,key,value形式,键值使用冒号;分割,每个键值中间用逗号,分割。

    字典包含在大括号,花括号{}中。

    字典的创建:

    d = {key: value,key: value}
    
    d1 = {"name":"jh","sex":"","age":18}
    print(d1)

    可以使用元组作为key,但list不可以作为key,得,key是不可重复,不可修改的。

    2.2、访问字典中的数据

    d1 = {"name":"jh","sex":"","age":18}
    print(d1["name"])    或
    print(d1.get("name"))
    两种方法区别:
    使用[]访问,key必须存在,否则程序运行异常;
    使用get访问,key不存在,会返回none,但是不会报错;

    2.3、字典常用操作

    2.3.1、字典数据修改

    d1 = {"name":"jh","sex":"","age":18}
    d1["msg"] = "今天是个好天气!!!"
    print(d1)
    d1["age"] = 28
    print(d1)

    输出结果为:

    {'name': 'jh', 'sex': '男', 'age': 18, 'msg': '今天是个好天气!!!'}
    {'name': 'jh', 'sex': '男', 'age': 28, 'msg': '今天是个好天气!!!'}

    key存在是修改操作,key不存在是添加操作。

    2.3.2、字典数据删除

    d1 = {"name":"jh","sex":"","age":18}
    #方法一
    d2 = d1.pop("age")
    d3 = d1.pop("m","404")  #如果key不存在,则可以设置返回值,如果key不存在,不设置返回值就报错
    print(d1)
    print(d2)
    print(d3)

    输出结果为:

    {'name': 'jh', 'sex': '男'}
    18
    404

    d1 = {"name":"jh","sex":"","age":18}
    #方法二
    del d1["age"]
    print(d1)

    输出结果为:

    {'name': 'jh', 'sex': '男'}

    d1 = {"name":"jh","sex":"","age":18}
    #方法三
    #popitem() 方法返回并删除字典中的最后一对键和值。
    # 第一次运行
    d.popitem()
    print(d)
    # 第二次运行
    d.popitem()
    print(d)
    # 第三次运行
    d.popitem()
    print(d)

    输出结果为:

    {'name': 'jh', 'sex': '男'}
    {'name': 'jh'}
    {}

    2.3.3、字典数据增加

    d1 = {"name":"jh","sex":"","age":18}
    d1["habby"] = "study"
    print(d1)

    输出结果为:

    {'name': 'jh', 'sex': '男', 'age': 18, 'habby': 'study'}

    字典键的特性:

    ①不可重复

    ②不可变

    2.4、字典常用方法

    keys 获取所有key

    d1 = {"name":"jh","sex":"","age":18}
    print(d1.keys())

    输出结果为:

    dict_keys(['name', 'sex', 'age'])

    values 获取所有值

    d1 = {"name":"jh","sex":"","age":18}
    print(d1.values())

    输出结果为:

    dict_values(['jh', '男', 18])

    items

    d1 = {"name":"jh","sex":"","age":18}
    print(d1.items())

    输出结果为:

    dict_items([('name', 'jh'), ('sex', '男'), ('age', 18)])

    pop 根据键弹出

    d1 = {"name":"jh","sex":"","age":18}
    print(d1.pop("name"))
    print(d1)

    输出结果为:

    jh
    {'sex': '男', 'age': 18}

    pop弹出的应该是存在的key,如果key不存在则会抛出异常。

    popitem 弹出最后一组键值对:

    d1 = {"name":"jh","sex":"","age":18}
    print(d1.popitem())
    print(d1)

    输出结果为:

    ('age', 18)
    {'name': 'jh', 'sex': '男'}

    update 更新数据

    d1 = {"name":"jh","sex":"","age":18,"msg":"你真是一个小机灵鬼"}
    d1.update(msg="明天有冰雹")
    print(d1)

    输出结果为:

    {'name': 'jh', 'sex': '男', 'age': 18, 'msg': '明天有冰雹'}

    clear 清除数据

    d1 = {"name":"jh","sex":"","age":18,"msg":"你真是一个小机灵鬼"}
    d1.clear()
    print(d1)

    输出结果为:

    {}

    3、数据类型之集合

    3.1、什么是集合?

    集合时python中最基本的数据结构,用来存储一个无序的不重复的元素序列。

    集合的标志也是大括号{},中间的元素使用逗号,隔开。

    3.2、集合创建

    s = {"123","456","666"}
    print(s)
    print(type(s))

    输出结果为:

    {'666', '456', '123'}
    <class 'set'>

    创建空集合

    s2 = set()
    print(s2)
    print(type(s2))
    s3 = set("123456")
    print(s3)
    print(type(s3))

    输出结果为:

    set()
    <class 'set'>
    {'6', '5', '2', '1', '3', '4'}
    <class 'set'>

    3.3、集合常用操作

    集合并没有像其它数据容器一样提供元素操作,元素操作都是通过函数实现的。

    集合之间操作

    - 差集

    s1 = {"123","456","789"}
    s2 = {"123","abc","987"}
    sc = s1 - s2
    print(sc)

    输出结果为:

    {'789', '456'}

    | 并集

    s1 = {"123","456","789"}
    s2 = {"123","abc","987"}
    sc = s1 | s2
    print(sc)

    输出结果为:

    {'abc', '789', '987', '456', '123'}

    & 交集

    s1 = {"123","456","789"}
    s2 = {"123","abc","987"}
    sc = s1 & s2
    print(sc)

    输出结果为:

    {'123'}

    3.4、集合常用方法

    add 添加操作

    s6 = {"abc","def"}
    s6.add("666")
    print(s6)

    输出结果为:

    {'abc', '666', 'def'}

    remove 移除指定元素

    s6 = {"abc","def"}
    s6.remove("abc")
    print(s6)

    输出结果为:

    {'def'}

    pop 随机移除元素

    s6 = {"abc","def"}
    s6.pop()
    print(s6)

    输出结果为:

    {'abc'}

    clear 清除所有元素

    s6 = {"abc","def"}
    s6.clear()
    print(s6)

    输出结果为:

    set()

    union 返回两个集合的并集

    s4 = {"123","456","789"}
    s5 = {"123","abc","987"}
    su = s4.union(s5)
    print(su)

    输出结果为:

    {'123', '456', '987', 'abc', '789'}

    difference 返回两个集合的差集

    s4 = {"123","456","789"}
    s5 = {"123","abc","987"}
    su = s4.difference(s5)
    print(su)

    输出结果为:

    {'789', '456'}

    intersection 返回集合的交集

    s4 = {"123","456","789"}
    s5 = {"123","abc","987"}
    su = s5.intersection(s4)
    print(su)

    输出结果为:

    {'123'}

    symmetric difference 返回两个集合中不重复元素的集合

    s4 = {"123","456","789"}
    s5 = {"123","abc","987"}
    su = s5.symmetric_difference(s4)
    print(su)

    输出结果为:

    {'abc', '987', '789', '456'}

    4、布尔与空值

    4.1、什么是空值?

    空值是python中一种特殊的值,空值的类型也是一种特殊数据类型

    空值使用场景

    通常作为默认值使用

    4.2、什么是布尔?

    布尔是python中最基本的数据类型,用来存储一个真或假的数值

     True

     False

    4.3、布尔数据类型转换

    4.3.1、布尔转换为其它数据类型

    布尔转换为init

    aa = True
    aa1 = int(aa)
    print(aa1)
    print(type(aa1))

    输出结果为:

    1
    <class 'int'>

    (True转换为int是1,False转换为int是0)

    布尔转换为str

    aa = True
    aa2 = str(aa)
    print(aa2) 
    print(type(aa2))

    输出结果为:

    True
    <class 'str'>

    9.3.2、其它类型转换为布尔

    空值转换为布尔

    m = None 
    print(bool(m))

    输出结果为:

    False

    int转换为布尔

    num = 100
    print(bool(num))

    输出结果为:

    True

    (布尔转换为数字类型,True转换为数字,是1;False转换为数字,是0。

    数字转换为布尔类型,0转换为False,其余数字都是True。)

    str转换为布尔

    ss = "abc"
    print(bool(ss))

    输出结果为:

    True

    (当字符串是一个空字符串,引号中什么也没有,字符串转换为布尔值,值为false。)

    list转换为布尔

    l1 = []
    print(bool(l1))
    l2 = ["1","2","3"]
    print(bool(l2))

    输出结果为:

    False
    True

    (空列表转换为bool类型为False,有数据的列表就是True)

    tuple转换为布尔

    t1 = ()
    print(bool(t1))
    t2 = (1,2,3)
    print(bool(t2))

    输出结果为:

    False
    True

    dict转换为布尔

    d1 = {"key":"value"}
    print(bool(d1))
    d2 = {}
    print(bool(d2))

    输出结果为:

    True
    False

    set转换为布尔

    s1 = {1,2,3}
    print(bool(s1))
    s2 = set()
    print(bool(s2))

    输出结果为:

    True
    False

    (list,tuple,dict,set中如果存在数据,转换为布尔都是True,没有数据就是False。)

    5、逻辑运算符

    常见逻辑运算符

    5.1、and 逻辑与

    b1 = False
    b2 = True
    bn1 = not b1
    bn2 = not b2
    ba1 = b1 and b2
    print(ba1)
    ba2 = bn1 and bn2
    print(ba2)
    ba3 = b2 and bn1
    print(ba3)

    输出结果为:

    False
    False
    True

    5.2、or 逻辑或

    b1 = False
    b2 = True
    bn1 = not b1
    bn2 = not b2
    bo1 = b1 or b2
    print(bo1)
    bo2 = b1 or bn2
    print(bo2)

    输出结果为:

    True
    False

    5.3、not 逻辑非

    b1 = False
    b2 = True
    bn1 = not b1
    bn2 = not b2
    print(b1)
    print(b2)
    print(bn1)
    print(bn2)

    输出结果为:

    False
    True
    True
    False

  • 相关阅读:
    聊聊Docker数据卷和数据卷容器
    Nginx虚拟主机
    Shell文本处理四剑客
    Docker镜像、容器剖析
    Tomcat性能优化及JVM内存工作原理
    Nginx动静分离架构&&HA-LB集群整合
    Mysql主从复制架构实战
    Mysql编译安装详解
    Apache虚拟主机实战
    Ansible性能调优
  • 原文地址:https://www.cnblogs.com/Caesars/p/12723404.html
Copyright © 2011-2022 走看看