zoukankan      html  css  js  c++  java
  • python基础之基本数据类型

    数据类型的分类

      数字、字符串、列表、元组、字典、集合

    1.1、数字int型,主要是用来计算的。

      1.1.1、布尔值型bool

        真 1 True

        假 0 False

    2.1、字符串str

      2.1.1、字符串的索引与切片

        索引即下标,就是字符串组成的元素从第一个开始,初始索引为0。 

    1
    2
    3
    4
    5
    = 'ABCD'
    print(a[0]) ===> A
    print(a[1]) ===> B
    print(a[2]) ===> C
    print(a[3]) ===> D

        切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则是顾头不顾腚)。

    1
    2
    3
    4
    5
    6
    7
    = 'ABCDEF'
    print(a[0:2])    ===> AB
    print(a[2:4])    ===> CD
    print(a[0:])      ===> ABCDEF #默认到最后
    print(a[0:-1])   ===> ABCDEF #-1就是最后一个
    print(a[0:5:2]) ===> ACE #步长2
    print(a[5:0:-2])===> FDB # 反向加步长

     2.1.2 字符串的常用方法。

     View Code
     View Code

     3.1 元组 tupe

      元组也称为只读列表,数据只可以被查询,不能被修改。字符串的切片操作同样适用于列表。列表用()标示,黎明的元素用逗号隔开。如(1,2,3)

    4.1 列表 list

      列表是python的基础数据类型之一,是用[]括起来,每个元素以逗号隔开,里面可以存放各种数据类型。如:

      li = ['sunshine',18,{'hobby':'eat'},[1,2,3]]

      列表还可以储存大量数据,32位python的限制是536870912个元素,64位python的限制是1152921504606846975 个元素。

      列表是有序的,有索引值,可以切片,方便取值。

      4.1.1 增

     insert_append_extend

      4.1.2 删

     pop_del_remove_clear

      4.1.3 改

     View Code

      4.1.4 查

      通过切片的方式或者循环的方式去查。

      4.1.5 其它操作

      count (数) 统计某个元素在列表中出现的次数。

    1
    2
    a = ['s','u','n','s','h','i','n','e']
    print(a.count('s'))  # 出现了2次

      index 方法 用于从列表中找出某个值第一个匹配项的索引位置

    1
    2
    a = ['s','u','n','s','h','i','n','e']
    print(a.index('n')) # 第一个出现n的索引位置为 2

      sort 在原位置对列表进行排序

    1
    2
    3
    4
    a = ['s','u','n','s','h','i','n','e']
    print(a.sort()) # 输出为 None
    a.sort() # 没有返回值
    print(a) # ['e', 'h', 'i', 'n', 'n', 's', 's', 'u']

      reverse 将列表中的元素反向存放

    1
    2
    3
    4
    a = ['s','u','n','s','h','i','n','e']
    # print(a.reverse()) # 输出为 None
    a.reverse() # 没有返回值
    print(a) # ['e', 'n', 'i', 'h', 's', 'n', 'u', 's']

    5.1 字典 dict

      字典是Python中唯一的映射类型,采用键值对(key-->value)的形式存储数据。Python 对key进行哈希函数运算,根据运算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示kye必须是不可变类型,如:数组、字符串、元组。

      字典是除列表之外最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象结合。两者的区别在于:字典是通过key来取值的,而不是通过偏移存取。

      5.1.1 增

     setdefaut

      5.1.2 删

     pop_popitem_clear

       5.1.3 改

     update

      5.1.4 查

     get

      5.1.5 其它

     View Code

      5.1.6 字典的循环

     key_value_items

    6.1 其它 range / enumerate / range

      6.1.1 for 循环:用户按照顺序循环可迭代对象的内容。

     for

      6.1.2 enumerate 枚举,对于一个可迭代的对象(iterable)/ 可遍历的对象(list,str等),enumerate将其组成一个索引序列,利用它可以同时获得索引和值

     View Code

      6.1.3 range 指定范围,生成指定数字

     range

     7.1 集合

      集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希的。主要作用是:

        1、去重  ---> 把一个列表变成集合,就自动去重了。

        2、关系测试 --> 测试两组数据之间的交集、差集、并集等关系。

      7.1.1 创建集合 

    1
    2
    3
    4
    set1 = set({1,2,'sunshine'})
    set2 = {1,2,'sunshine'}
    print(set1,type(set1)) # {1, 2, 'sunshine'} <class 'set'>
    print(set2,type(set2)) # {1, 2, 'sunshine'} <class 'set'>

      7.1.2 增

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    set1 = {'sunshine','age',18}
    set1.add('hobby')
    print(set1) # {18, 'age', 'sunshine', 'hobby'} 集合是无序的
     
    set1.update('A')
    print(set1) # {'A', 'sunshine', 18, 'hobby', 'age'}
    set1.update('BC')
    print(set1) # {'C', 'A', 'sunshine', 18, 'B', 'hobby', 'age'}
    set1.update([1,2,3])
    print(set1) # {1, 2, 3, 'C', 'A', 'sunshine', 18, 'B', 'hobby', 'age'}
     
    # 复制集合
    num1 = {1,2,3}
    num2 = num1.copy()
    print(num2) # {1, 2, 3}

      7.1.3 删

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    set1 = {'sunshine','age',18}
     
    set1.remove('sunshine'# 删除一个元素
    print(set1) # {'age', 18}
     
    set1.pop() # 随机删除一个元素
    print(set1)  # {'age'}
     
    set1.clear() # 清空集合
    print(set1) # set()
     
    del set1 # 删除集合
    print(set1) # 报错 NameError: name 'set1' is not defined
     
    # discard() 删除集合中指定的元素,删除不存在的则不操作
    num = {1,2,3}
    num.discard(4)
    print(num) # {1, 2}
    num.discard(3)
    print(num) # {1, 2, 3}

      7.1.4 其它操作

    1
    2
    set1 = {1,2,3}
    set2 = {2,3,4}

        交集 (& 或 intersection)

    1
    2
    3
    4
    5
    6
    7
    8
    print(set1 & set2) # {2, 3}
    print(set1.intersection(set2)) #{2, 3}
     
    # intersection_update 交集更新操作
    dreamers = {'ljl','wc','xy','zb','lsy'}
    girls = {'mmf','lsy','syj'}
    dreamers.intersection_update(girls) # 将集合dreamers与集合girls的交集赋值给dreamers
    print(dreamers) # {'lsy'}

        并集 (| 或 union)

    1
    2
    print(set1 | set2) # {1, 2, 3, 4}
    print(set2.union(set1)) # {1, 2, 3, 4}

        差集 (- 或 difference)

    1
    2
    3
    4
    5
    6
    7
    8
    print(set1 - set2) # {1}
    print(set1.difference(set2)) # {1}
     
    # difference_update 差集更新操作。
    dreamers = {'ljl','wc','xy','zb','lsy'}
    girls = {'mmf','lsy','syj'}
    dreamers.difference_update(girls)# dreamers去除跟girls相同的元素
    print(dreamers) #{'zb', 'ljl', 'xy', 'wc'}

        反交集 (^ 或 symmetric_difference)

    1
    2
    print(set1 ^ set2) # {1, 4}
    print(set1.symmetric_difference(set2)) # {1, 4}

        子集与超集 (issubset / issuperset)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    set1 = {1,2,3}
    set2 = {1,2,3,4,5}
     
    print(set1 < set2) # True
    print(set1.issubset(set2)) # True 说明set1 是 set2 的子集
     
    print(set2 > set1) #True
    print(set2.issuperset(set1)) #True 说明set2 是 set1 的超集
     
    # isdisjoint() # 检测2个集合是否不存在交集,存在交集则返回False
    res = set2.isdisjoint(set1)
    print(res) # False
     
    #symmetric_difference()  对称差集
    set1 = {1,2,3}
    set2 = {2,3,4}
    res = set1.symmetric_difference(set2)
    print(res) # {1, 4}
     
    #symmetric_difference_update()  对称更新差集
    set1.symmetric_difference_update(set2)
    print(set1) # {1, 4}

        forzenset 不可变集合,让集合变成不可变类型

    1
    2
    = frozenset('sunshine')
    print(a,type(a)) # frozenset({'e', 's', 'n', 'i', 'u', 'h'}) <class 'frozenset'>

        集合的一些应用

     View Code

     练习题:

    购物车
    功能要求:
    要求用户输入总资产,例如:2000
    显示商品列表,让用户根据序号选择商品,加入购物车购买,如果商品总额大于
    总资产,提示账户余额不足,否则,购买成功
    goods = [
    {"name":"电脑","price":1999},
    {"name":"鼠标","price":10},
    {"name":"游艇","price":20},
    {"name":"美女","price":998}
    ]
  • 相关阅读:
    [搬运] Tina R329 swupdate OTA 步骤
    摄像头 ISP 调试的经验之谈(以全志 AW hawkview 为例)
    2021 年了 在 WSL2 中使用 adb 、fastboot 的等命令
    wsl2 编译 linux openwrt 项目的时候,经常会出现 bash: -c: line 0: syntax error near unexpected token `('
    sipeed v833 硬件验证以及开发记录(2021年5月18日)
    Allwinner & Arm 中国 & Sipeed 开源硬件 R329 SDK 上手编译与烧录!
    把 R329 改到 ext4 sdcard 启动变成 Read-Only 系统,导致没有文件修改权限后如何修复。
    linux kernel version magic 不一致导致的模块 加载 (insmod) 不上
    剑指 Offer 17. 打印从1到最大的n位数
    剑指 Offer 16. 数值的整数次方
  • 原文地址:https://www.cnblogs.com/valorchang/p/11282145.html
Copyright © 2011-2022 走看看