• python学习笔记之--基本数据类型和结构


    首先思考一个问题:python为什么要有类型?开辟空间存储内容

    程序 = 数据结构 +算法
    数据结构:你处理和存储数据
    (重点)算法:解决问题的步骤:分析问题,设计算法,编写程序,调试,完成

    数据主要分为

    • int(整数型) ;数字的整数
    • float(浮点型); 数字带小数
    • str(字符串); 用 ‘’ 或者 “” 引用的任意文本
    • bool(布尔型);只有 True 和 False

    基本数据结构

    • list(列表)    #[]
    • tuple(元祖) #()
    • dict(字典)    #{}
    • set(集合)    #set()

    数值、字符串、元祖是不可变类型;

    列表、字典、集合是可变类型

    注:严格来讲,序列(列表元组字典集合)是数据结构,而数值字符串布尔值空值是数据类型

    Number(数字)

    • Python3 支持 int、float、bool、complex(复数)
    >>> type(3)
    <class 'int'>
    >>> type(2.2)
    <class 'float'>
    >>> type(True)
    <class 'bool'>
    >>> type(1+2j)
    <class 'complex'>
    >>> 1e10    #科学计数
    10000000000.0
    >>>

    #不同类型的数据之间是不能互相操作的,示例:
    >>> a = 1
    >>> b = "gloryroad"
    >>> a+b
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: unsupported operand type(s) for +: 'int' and 'str'


    #类型转换
    int(x) 将x转换为一个整数。
    float(x) 将x转换到一个浮点数。
    complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
    complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
    如果一定要操作就涉及到数据类型时间的转换,数据类型的转换,你只需要将数据类型作为函数名即可,示例:

     >>> age='18'
     >>> type(age)
     <class 'str'>
     >>> int(age)+10
     28
     >>> str(100)
     '100'

     bool布尔型 True和False

    总结:

    • 布尔类型的假:""/0/[]/()/{}/False/None
    • 布尔类型的真:除了以上的假都是真(True/1)
    >>> 4>3
    True
    >>> 4<3
    False
    >>> bool([])
    False
    >>> bool(())
    False
    >>> bool({})
    False
    >>> bool(0)
    False
    >>> bool("")
    False

    此处还可以用isinstance来判断:

    >>> a=100
    >>> isinstance(a,int)
    True

    type和isinstance的区别?

    数值运算:+、-、*、/、%、//、**

    >>>5 + 4  # 加法
    9
    >>> 4.3 - 2 # 减法
    2.3
    >>> 3 * 7  # 乘法
    21
    >>> 10 / 8  # 真除,得到一个浮点数
    1.25
    >>> 10 // 8 # 整除(向下取整)
    1
    >>> 10 % 8 # 取余 
    2
    >>> 2 ** 5 # 乘方
    32
    
    
    #运算函数math包
    >>> import math
    >>> math.sqrt(4)  #开方
    2.0
    >>> math.pow(2,4)  #次方
    16.0
    >>> math.pi    #pi
    3.141592653589793
    
    >>> math.ceil(4.01)  #向上取整
    5
    
    >>> divmod(9,4)  #同时取整和取余
    (2, 1)
    
    *divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)

     比较运算:==、!=、>、<、>=、<=

    >>> a = 21
    >>> b = 10
    >>> c = 0
    >>>
    ... if ( a == b ):
    ...    print ("1 - a 等于 b")
    ... else:
    ...    print ("1 - a 不等于 b")
    ...
    1 - a 不等于 b
    >>> if ( a != b ):
    ...    print ("2 - a 不等于 b")
    ... else:
    ...    print ("2 - a 等于 b")
    ...
    2 - a 不等于 b

    赋值运算:=、+=、-=、*=、/=、%=、//=、%=

    >>> a = 21
    >>> b = 10
    >>> c = 0
    >>> c = a + b
    >>> print ("1 - c 的值为:", c)
    1 - c 的值为: 31
    >>> c += a
    >>> print ("2 - c 的值为:", c)
    2 - c 的值为: 52
    >>> c *= a
    >>> print ("3 - c 的值为:", c)
    3 - c 的值为: 1092
    >>> c /= a
    >>> print ("4 - c 的值为:", c)
    4 - c 的值为: 52.0

    位运算:

    & 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
    | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101
    ^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
    ~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
    << 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000
    >> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111

    逻辑运算:and、or、not

     练习:

    1.输出1000以内的能被2、3、5同时整除的数。
    2.输出1000以内的能被2、3、5中任意一个整除的数。每10个数为一行输出。

    3.判断一个年份是否是闰年

    1.
    >>> for i in range(1,1000):
    ...     if i%2==0 and i%3==0 and i%5==0:
    ...         print(i)
    ...
    
    
    2.

    >>> count = 0
    >>> for i in range(1,10001):
    ...     if i % 2 ==0 or i % 3 ==0 or i % 5 ==0:
    ...         print(i,end=" ")
    ...         count+=1
    ...         if count%10==0:
    ...             print("")

     

    3.
    >>> year =int(input("请输入一个年份:"))
    请输入一个年份:2000
    >>>
    >>> if (year%4 == 0 and year%100 != 0) or year%400 == 0:
    ...     print("%s 是闰年" %year)
    ...
    2000 是闰年
     

     成员运算:in、not in

    身份运算:is、is not

    is is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
    is not is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

    注: id() 函数用于获取对象内存地址。

    另外五种类型会单独来写:

    >>> print(type('road'))
    <class 'str'>
    >>> print(type([1,2,3]))
    <class 'list'>
    >>> print(type((1,2,3)))
    <class 'tuple'>
    >>> print(type({"a":1,"b":2}))
    <class 'dict'>
    >>> print(type(set([3,4])))
    <class 'set'>
  • 相关阅读:
    Redis学习第八课:Redis高级实用特性(二)
    Redis学习第八课:Redis高级实用特性(一)
    Redis学习第七课:键值命令和服务器命令
    Redis学习第六课:Redis ZSet类型及操作
    Redis学习第五课:Redis Set类型及操作
    Redis学习第四课:Redis List类型及操作
    (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk.
    Clickhouse单机及集群部署详解
    一致性模型及一致性协议
    HBase存储及读写原理介绍
  • 原文地址:https://www.cnblogs.com/wenm1128/p/11549998.html
Copyright © 2020-2023  润新知