zoukankan      html  css  js  c++  java
  • python3基础笔记(二)python的基本数据类型与运算符

    一、运算符

    1.算术运算符

    假设变量a的值是10,变量b的值是21,则 -

    运算符描述示例
    + 加法运算,将运算符两边的操作数增加。 a + b = 31
    - 减法运算,将运算符左边的操作数减去右边的操作数。 a – b = -11
    * 乘法运算,将运算符两边的操作数相乘 a * b = 210
    / 除法运算,用右操作数除左操作数 b / a = 2.1
    % 模运算,用右操作数除数左操作数并返回余数 b % a = 1
    ** 对运算符进行指数(幂)计算 a ** b,表示1021次幂
    // 地板除 - 操作数的除法,其结果是删除小数点后的商数。 但如果其中一个操作数为负数,则结果将被保留,即从零(向负无穷大)舍去 9//2 = 4 , 9.0//2.0 = 4.0-11//3 = -4-11.0//3 = -4.0

    2.比较(关系)运算符

    比较(关系)运算符比较它们两边的值,并确定它们之间的关系。它们也称为关系运算符。假设变量a的值10,变量b的值是20,则 -

    运算符描述示例
    == 如果两个操作数的值相等,则条件为真。 (a == b)求值结果为 false
    != 如果两个操作数的值不相等,则条件为真。 (a != b)求值结果为 true
    > 如果左操作数的值大于右操作数的值,则条件成为真。 (a > b)求值结果为 false
    < 如果左操作数的值小于右操作数的值,则条件成为真。 (a < b)求值结果为 true
    >= 如果左操作数的值大于或等于右操作数的值,则条件成为真。 (a >= b)求值结果为 false
    <= 如果左操作数的值小于或等于右操作数的值,则条件成为真。 (a <= b)求值结果为 true

    3.赋值运算符

    假设变量a的值10,变量b的值是20,则 -

    运算符描述示例
    = 将右侧操作数的值分配给左侧操作数 c = a + b表示将a + b的值分配给c
    += 将右操作数相加到左操作数,并将结果分配给左操作数 c + = a等价于c = c + a
    -= 从左操作数中减去右操作数,并将结果分配给左操作数 c -= a 等价于 c = c - a
    *= 将右操作数与左操作数相乘,并将结果分配给左操作数 c *= a 等价于 c = c * a
    /= 将左操作数除以右操作数,并将结果分配给左操作数 c /= a 等价于 c = c / a
    %= 将左操作数除以右操作数的模数,并将结果分配给左操作数 c %= a 等价于 c = c % a
    **= 执行指数(幂)计算,并将值分配给左操作数 c **= a 等价于 c = c ** a
    //= 运算符执行地板除运算,并将值分配给左操作数 c //= a 等价于 c = c // a

    4.逻辑运算符

    Python语言支持以下逻辑运算符。假设变量a的值为True,变量b的值为False,那么 -

    运算符描述示例
    and 如果两个操作数都为真,则条件成立。 (a and b)的结果为False
    or 如果两个操作数中的任何一个非零,则条件成为真。 (a or b)的结果为True
    not 用于反转操作数的逻辑状态。 not(a and b) 的结果为True

    5.按位运算符

    按位运算符执行逐位运算。 假设变量a = 60; 和变量b = 13; 现在以二进制格式,它们将如下 -

    a = 0011 1100
    
    b = 0000 1101
    
    -----------------
    
    a&b = 0000 1100
    
    a|b = 0011 1101
    
    a^b = 0011 0001
    
    ~a = 1100 0011
    
    Shell

    Python的内置函数bin()可用于获取整数的二进制表示形式。

    以下是Python语言支持位运算操作符 -

    运算符描述示例
    & 如果它存在于两个操作数中,则操作符复制位到结果中 (a & b) 结果表示为 0000 1100
    | 如果它存在于任一操作数,则复制位。 (a|b) = 61 结果表示为 0011 1101
    ^ 二进制异或。如果它是一个操作数集合,但不是同时是两个操作数则将复制位。 (a ^ b) = 49 (结果表示为 0011 0001)
    ~ 二进制补码,它是一元的,具有“翻转”的效果。 (~a ) = -61有符号的二进制数,表示为1100 0011的补码形式。
    << 二进制左移,左操作数的值由右操作数指定的位数左移。 a << 2 = 240 (结果表示为 1111 0000)
    >> 二进制右移,左操作数的值由右操作数指定的位数右移。 a >> 2 = 15(结果表示为0000 1111)

    6.成员运算符

    Python成员运算符测试给定值是否为序列中的成员,例如字符串,列表或元组。 有两个成员运算符,如下所述 -

    运算符描述示例
    in 如果在指定的序列中找到一个变量的值,则返回true,否则返回false -
    not in 如果在指定序列中找不到变量的值,则返回true,否则返回false -

    7.身份运算符

    身份运算符比较两个对象的内存位置。常用的有两个身份运算符,如下所述 -

    运算符描述示例
    is 如果运算符任一侧的变量指向相同的对象,则返回True,否则返回False  
    is not 如果运算符任一侧的变量指向相同的对象,则返回True,否则返回False -

    8. 运算符优先级

    下表列出了从最高优先级到最低优先级的所有运算符,如下所示 -

    序号运算符描述
    1 ** 指数(次幂)运算
    2 ~ + - 补码,一元加减(最后两个的方法名称是+@-@)
    3 * / % // 乘法,除法,模数和地板除
    4 + -  
    5 >> << 向右和向左位移
    6 & 按位与
    7 ^| 按位异或和常规的“OR
    8 <= < > >= 比较运算符
    9 <> == != 等于运算符
    10 = %= /= //= -= += *= **= 赋值运算符
    11 is is not 身份运算符
    12 in not in 成员运算符
    13 not or and 逻辑运算符

    二、数据类型:

    1、数字

      int(整型)

      float(浮点型)
        def bit_length(self): 
            """ 返回表示该数字的时占用的最少位数 """
            """
            int.bit_length() -> int
            
            Number of bits necessary to represent self in binary.
            >>> bin(37)
            '0b100101'
            >>> (37).bit_length()
            6
            """
            return 0
    
     def __int__(self): 
            """ 转换为整数 """ 
            """ x.__int__() <==> int(x) """
            pass
    #等价于 int(x)
    

      


    2、字符串:str

    字符串一旦创建之后就不能修改,若修改就会重新创建一个新的字符串。

    字符串可以用 len() 函数来返回字符串内含有多少字符

    (1)字符串常用方法:

      1、upper(self)  ---->将字符串中所有字母大写,不去管其它非字母字符。

        参数:无

        返回值:字符串

    str1 = 'hello my name is 张'
    print(str1.upper())
    

      输出:

    HELLO MY NAME IS 张
    

      


      2、lower(self)  ---->把全部字母字符转换成小写,不去管其它非字母字符。

        参数:无

        返回值:字符串

    str1 = 'Zbuter'
    print(str1.lower())
    

      输出:

    zbuter

      3、swapcase(self)  ---->将字符串中的大小写字符互换

        参数:无

        返回值:字符串

    str1 = '张Zbuter'
    print(str1.swapcase())
    

      输出:

    张zBUTER
    

       


      4、count(self, sub, start=None, end=None)  ---->计算字符串中从 start 开始到 end 结束 sub 出现的次数 start 默认是字符串开始 end 默认是字符串结束

        参数:

          sub:字符或字符串

          start:开始的索引位置

           end:结束的索引位置

        返回值:字符串中sub出现的次数

    hello = 'hello world'
    print(hello.count('o'))
    print(hello.count('o',6))
    

      输出:

    2
    1

      5、capitalize(self)  ---->将字符串的首字母大写

        参数:无

        返回值:将字符串的首字母大写的字符串

    name = 'zjs'
    print(name.capitalize())
    

      输出:

    Zjs
    

       


      6、casefold(self) 与 lower(self)  ---->将字符串小写 

        参数:无

        返回值:将字符串小写的字符串

    name = 'ZJS'
    print(name.lower())
    print(name.casefold())
    

      输出:

    zjs
    zjs

      casefold(self) 与 lower(self)的区别是:

      lower() 只对 ASCII 也就是 'A-Z'有效,但是其它一些语言里面存在小写的情况就没办法了。文档里面举得例子是德语中'ß'的小写是'ss'(这个我也不懂)


      7、center(self, width, fillchar=None)  ---->将字符串居中用fillchar填充  一共width个字符 默认是使用空格填充  返回新的字符串

        参数:

          width:新形成的字符串长度,如果源字符串比width指定的长度长则直接返回源字符串

          fillchar:指定一个字符来填充

        返回值:填充后的字符串

    name = 'ZJS'
    print(name.center(20))
    print(name.center(20, '-'))
    

      输出:

            ZJS         
    --------ZJS---------
    

      

     


      8、ljust(self, width, fillchar=None)  ---->返回一个长度为width,左对齐的字符串,最右边填充fillchar,默认为空格。width要大于len(str),否则返回原字符串。

    str1 = 'Zbuter'
    print(str1.ljust(20))
    print(str1.ljust(20, '-'))
    

      输出:

    Zbuter              
    Zbuter--------------
    

      


      9、rjust(self, width, fillchar=None)  ---->与ljust类似  右对齐

     


      10、lstrip(self, chars=None)  ---->返回一个去除前导字符的新字符串,chars参数是一个字符串,它包含了所有将要被移除的字符集合。默认为空格。

        参数:  

          chars:字符集合

        返回值:字符串

    str1 = '       www.zbuter.cn'
    str2 = 'www.zbuter.cn'
    print(str1.lstrip())
    print(str2.lstrip('cnw.'))
    

      输出:

    www.zbuter.cn
    zbuter.cn
    

       


      11、rstrip(self, chars=None)  ---->与lsplit类似  从右侧开始


      12、strip(self, chars=None)    ---->与lstrip和rstrip类似  在字符串两头开始匹配。多用于清除字符串两端的空格


      13、endswith(self, suffix, start=None, end=None)  ---->判断字符串是否以 suffix 结尾  start 默认是字符串开始 end 默认是字符串结束

        参数:

          suffix:后缀

          start:开始的索引位置

          end:结束的索引位置

        返回值:布尔值

    hello = 'hello world'
    print(hello.endswith('ld'))
    print(hello.endswith('asd'))
    

      输出:

    True
    False
    

     


      

      14、startswith(self, prefix, start=None, end=None)  ---->与endswith类似  判断是否以prefix开头


      15、expandtabs(self, tabsize=8)  ---->把字符串中的 tab 符号(' ')转为空格,tab 符号默认的空格数是 8。从头开始数,数到第一个 正好为8个空格,不足则补空格,如果还有 ,接着从第一个 数到第二个 仍然为8个空格,以此类推直到最后一个 结束。

        参数:

          tabsize:指定转换字符串中的 tab 符号(' ')转为空格的字符数,默认的字符数是8。

        返回值:该方法返回字符串中的 tab 符号(' ')转为空格后生成的新字符串。

    hello = 'hello	world'
    print(hello.expandtabs(4))
    print(hello.expandtabs(10))
    

      输出:

    hello   world
    hello     world
    

       


      16、find(self, sub, start=None, end=None)  ---->在字符串中查找 sub 出现的位置

        参数:

          sub:指定查找的字符串或字符

          start:开始的索引位置

          end:结束的索引位置

        返回值:sub出现的第一次的索引 如果不存在则返回-1

    hello = 'hello	world'
    print(hello.find('o'))
    print(hello.find('z'))
    

      输出:

    4
    -1

      17、rfind(self, sub, start=None, end=None)  ---->与find类似  从右侧查找


      18、index(self, sub, start=None, end=None)  ---->在字符串中查找 sub 出现的位置

        参数:

          sub:指定查找的字符串或字符

          start:开始的索引位置

          end:结束的索引位置

        返回值:sub出现的第一次的索引 如果不存在则抛出异常

    hello = 'hello	world'
    print(hello.index('o'))
    print(hello.index('z'))
    

      输出:

    4
    Traceback (most recent call last):
      File "E:/zjs/Python/pythonTest/day01/day01/d1.py", line 36, in <module>
        print(hello.index('z'))
    ValueError: substring not found
    

      


      19、rindex(self, sub, start=None, end=None)  ---->与index类似  从右侧查找


      20、title(self)  ---->将字符串中所有单词的首字母大写

        参数:无

        返回值:字符串

    str1 = 'hello my name is 张'
    print(str1.title())
    

      输出:

    Hello My Name Is 张
    

      


      21、replace(self, old, new, count=None)  ---->用 new 替换原字符串中的 old ,count指定替换的次数

        参数:  

          old:需要替换的字符(串)

          new:替换的字符(串)

          count:替换的次数不超过count次

        返回值:字符串

    str1 = 'www.zbuter.cn'
    str2 = 'www.zbuter.cn'
    print(str1.replace('.', '。'))
    print(str2.replace('.', ',', 1))
    

      输出:

    www。zbuter。cn
    www,zbuter.cn
    

      


      22、partition(self, sep)  ---->该方法用于拆分字符串,返回一个包含三个元素的元组。如果未能在原字符串中找到Sep,则元组的三个元素为:原字符串,空串,空串;否则,从原字符串中遇到的第一个Sep字符开始拆分,元组的三个元素为:Sep之前的字符串,Sep字符,Sep之后的字符串;

        参数:  

          sep:分割标记

        返回值:元祖

    str1 = '       www.zbuter.cn'
    str2 = 'www.zbuter.cn'
    print(str1.partition('.'))
    print(str2.partition('z'))
    

      输出:

    ('       www', '.', 'zbuter.cn')
    ('www.', 'z', 'buter.cn')

      23、rpartition(self, sep)  ---->与partition类似  从右侧查找sep


      24、split(self, sep=None, maxsplit=-1)  ---->返回一个以Sep分隔的列表,maxsplit指定拆分次数(因此,列表中元素的个数为maxsplit + 1)。Sep默认为空格,maxsplit默认不限制拆分次数。

        参数:  

          sep:分隔符

          maxsplit:拆分次数

        返回值:字符串

    str1 = 'www.zbuter.cn'
    str2 = 'www.zbuter.cn'
    print(str1.split('.'))
    print(str2.split('.', 1))
    

      输出:

    ['www', 'zbuter', 'cn']
    ['www', 'zbuter.cn']
    

      


      25、rsplit(self, sep=None, maxsplit=-1)  ---->与 split 类似  从右侧拆分


      26、splitlines(self, keepends=None)  ---->拆分一个包含多行的字符串,以每行为一个元素返回一个列表 keepends是一个True字符或非零整数

        参数:  

          keepends:是否在列表内也添加换行符

        返回值:字符串

    str1 = '123
    456'
    str2 = '123
    456'
    print(str1.splitlines())
    print(str2.splitlines(True))
    

      输出:

    ['123', '456']
    ['123
    ', '456']
    

      


      

      27、join(self, iterable)  ---->使用连接符str来连接iterable对象中的元素,如果传入一个非iterable对象,如整数、布尔值等,将抛出异常Type Error。 

        参数:iterable:使用字符串来连接iterable

        返回值:字符串

    str1 = 'Zbuter'
    print(str1.join('12'))
    print(str1.join('123'))
    
    print(str1.join(123))
    

      输出:

    1Zbuter2
    1Zbuter2Zbuter3
    Traceback (most recent call last):
      File "E:/zjs/Python/pythonTest/day01/day01/d1.py", line 39, in <module>
        print(str1.join(123))
    TypeError: can only join an iterable

      28、zfill(self, width)  ---->返回一个长度为width的数字字符串,最左边填充0。如果width小于等于原字符串长度,则返回原字符串。主要用于数字类字符串的格式化。

        参数:

          width:填充的宽度

        返回值:字符串

    str1 = 'aaa'    
    str2 = '123'
    print(str1.zfill(5))
    print(str2.zfill(5))
    

      输出:

    00aaa
    00123

      29、format(self, *args, **kwargs)  ---->格式化字符串

        参数:

          *args:是用来发送一个(非键值对)可变数量的参数列表给一个函数

          **kwargs 允许你将不定长度的键值对, 作为参数传递给一个函数。 如果你想要在一个函数里处理带名字的参数, 你应该使用**kwargs。

        返回值:格式化后的新字符串

    str1 = 'my name is {name} age is {age}'
    str2 = 'my name is {0} age is {1}'
    print(str1.format(name = 'zjs', age = 12))
    print(str2.format('zjs', 12))
    

      输出:

    my name is zjs age is 12
    my name is zjs age is 12
    

      

     更多参考:http://www.cnblogs.com/wupeiqi/articles/5484747.html


      30、format_map(self, mapping)  ---->  待更新


      31、isalnum(self)  ---->字符串中是否只含数字、字母

        参数:无

        返回值:布尔值

    str1 = '123abc'
    str2 = '123_abc'
    print(str1.isalnum())
    print(str2.isalnum())
    

      输出:

    True
    False
    

      


      32、isalpha(self)  ---->字符串是否只含有字母

        参数:无

        返回值:布尔值

    str1 = 'abcdef'
    str2 = '_abc'
    print(str1.isalpha())
    print(str2.isalpha())
    

      输出:

    True
    False

      33、isdecimal(self)  ---->字符串是否只包含十进制字符。这种方法只存在于unicode对象。

        参数:无

        返回值:布尔值

    str1 = '123'
    str2 = 'this123'
    print(str1.isdecimal())
    print(str2.isdecimal())
    

      输出:

    True
    False

      34、isdigit(self)  ---->检测字符串是否只由数字组成。

        参数:无

        返回值:布尔值

    str1 = '123'
    str2 = 'this123'
    print(str1.isdigit())
    print(str2.isdigit())
    

      输出:

    True
    False

      35、isidentifier(self)  ---->判断字符串是否是合法的标识符

        参数:无

        返回值:布尔值

    str1 = '_a'
    str2 = '1a'
    print(str1.isidentifier())
    print(str2.isidentifier())
    

      输出:

    True
    False

      36、islower(self)  ---->判断字符串是否全是小写

        参数:无

        返回值:布尔值

    str1 = 'abcdefg'
    str2 = 'Abcdefg'
    print(str1.islower())
    print(str2.islower())
    

      输出:

    True
    False

      37、isnumeric(self)  ---->判断字符串是否只包含数字字符。数字字符范围很大,一般来说,数字字符是拥有如下属性值的字符:Numeric_Type=Digit, Numeric_Type=Decimal或Numeric_Type=Numeric。比较isdecimal()、isdigit()、isnumeric(),几个方法检测的范围依次扩大。

        参数:无

        返回值:布尔值

    str1 = '123'
    str2 = 'a123'
    print(str1.isnumeric())
    print(str2.isnumeric())
    

      输出:

    True
    False
     
     
     

      38、isprintable(self)  ---->判断字符串所包含的字符是否全部可打印

        参数:无

        返回值:布尔值

    str1 = 'hello world'
    str2 = 'hello	world'
    print(str1.isprintable())
    print(str2.isprintable())
    

      输出:

    True
    False

      39、isspace(self)  ---->判断字符串是否仅包含空格或制表符

        参数:无

        返回值:布尔值

    str1 = '   	 
    '
    str2 = ''
    print(str1.isspace())
    print(str2.isspace())
    

      输出:

    True
    False

      40、istitle(self)  ---->判断字符串每个单词的首字母是否大写

        参数:无

        返回值:布尔值

    str1 = '张家顺'
    str2 = 'Zbuter'
    str3 = '张家顺Zbuter'
    print(str1.istitle())
    print(str2.istitle())
    print(str3.istitle())
    

      输出:

    False
    True
    True

      41、isupper(self)  ---->与islower()相反  判断字符串是否全部大写


      42、encode(self, encoding='utf-8', errors='strict')  ---->


      43、decode(self, *args, **kwargs)  ---->


      44、maketrans(self, *args, **kwargs)  

      45、translate(self, table)  

       maketrans 与 translate 配合使用

    str = '30416657'
    trans = str.maketrans('0123456789', '零一二三四五六七八九')
    print(str.translate(trans))
    

      输出:

    三零四一六六五七

    (2)字符串的索引:

    str = 'zbuter'
    print(str[0], str[1])
    print(str[-1], str[-2])  # 负号代表在字符串后面数
    

      输出:

    z b
    r e

    str[0]代表字符串的第一个字符 以此类推

    用于获取字符串中某一个字符


    (3)字符串的切片:

    str = 'zbuter'
    print(str[0:2])
    print(str[:2])  # 与 str[0:2] 含义相同
    print(str[:-1])  # 表示从 0 到 最后一个字符(不含)
    print(str[2:-1])    #从第二个字符到最后一个字符)(不含)
    

      输出:

    zb
    zb
    zbute
    ute
    

      


    (4)字符串的长度

    str = 'zbuter'
    print(len(str))
    

      输出:

    6
    

      


     (5)字符串内字符的遍历

    str1 = "hello my name is zjs"
    
    for s in str1:
        print(s)
    

      输出:

    h
    e
    l
    l
    o
     
    m
    y
     
    n
    a
    m
    e
     
    i
    s
     
    z
    j
    s

    3、列表:list

    创建列表:

    name_list = ['zhang', 'wang', 'li']
    或
    name_list = list(['zhang', 'wang', 'li'])

    列表内的元素是有序的

    (1)常用方法:

      1.append(self, p_object)  ---->在列表最后追加一个元素

        参数:p_object  追加的元素

        返回值:None

    ls = [1, '2', 'abc']
    s = ls.append(5)
    print(ls)
    print(s)
    

      输出:

    [1, '2', 'abc', 5]
    None

      列表可以追加任意的数据类型。包括列表、元祖和字典。


      2.clear(self)  ---->清空字典

        参数:无

        返回值:None

    ls = [1, '2', 'abc']
    s = ls.clear()
    print(ls)
    print(s)
    

      输出:

    []
    None

      3.copy(self)  ---->字典的浅拷贝  只拷贝直接子对象

        参数:无

        返回值:列表

    ls = [1, '2', 'abc']
    s = ls.copy()
    print(ls)
    print(s)
    ls = []
    print(ls)
    print(s)
    

      输出:

    [1, '2', 'abc']
    [1, '2', 'abc']
    []
    [1, '2', 'abc']

      4.count(self, value)  ---->计算value在列表中出现的次数

        参数:value  可以是任意类型

        返回值:int类型的数字

    ls = [1, '2', 'abc', 1, 1, 1]
    s = ls.count(1)
    print(ls)
    print(s)
    

      输出:

    [1, '2', 'abc', 1, 1, 1]
    4

      5.insert(self, index, p_object)  ---->在 index 处插入p_object

      参数:

          index:  索引位置

          p_object:需要插入的元素

      返回值:int类型的数字

    ls = [1, '2', 'abc']
    s = ls.insert(1, 4)
    print(ls)
    print(s)
    ls.insert(4, 4)            #插入如果超出了列表的索引范围则在最后一个位置插入
    print(ls)
    

      输出:

    [1, 4, '2', 'abc']
    None
    [1, 4, '2', 'abc', 4]

      6.index(self, value, start=None, stop=None)  ---->查找value从start开始到stop处出现的索引位置 如果不存在这个值会抛出异常

      参数:

          value:  需要查找的元素

          start:  开始查找的索引位置 默认是列表的第一个元素

          stop:  结束查找的索引位置 默认是列表的最后一个元素

      返回值:int类型数字 value第一次出现的索引位置

    ls = [0, '2', 'abc', 1, 1, 1]
    s = ls.index(1, 2, 4)
    print(s)
    s = ls.index(1, 2, 3)
    print(s)
    

      输出:

    3
    Traceback (most recent call last):
      File "E:/zjs/Python/pythonTest/day01/day01/d1.py", line 69, in <module>
        s = ls.index(1, 2, 3)
    ValueError: 1 is not in list

      7.extend(self, iterable)  ---->在列表后追加一个可迭代的值

      参数:iterable  追加的可迭代元素

      返回值:None

    ls = [0, '2', 'abc', 1, 1, 1]
    ex = ['a', 'bc', 1, 3]
    s = ls.extend(ex)
    print(ls)
    print(s)
    

      输出:

    [0, '2', 'abc', 1, 1, 1, 'a', 'bc', 1, 3]
    None

      与append不同,

      append一个列表是把列表整体追加到列表尾部,

      extend则是一个一个追加到列表的末尾,

      extend不接受数字类型,只能传递一个可迭代对象


      8.pop(self, index=None)  ---->删除列表中最后一个元素。若index指定则删除index处的元素

        参数:index  删除的元素索引

        返回值:None

    ls = [0, '2', 'abc', 1, 1, 1]
    ex = ['a', 'bc', 1, 3]
    s = ls.pop()
    print(ls)
    print(s)
    s = ls.pop(2)
    print(ls)
    print(s)
    

      输出:

    [0, '2', 'abc', 1, 1]
    1
    [0, '2', 1, 1]
    abc

      9.remove(self, value)  ---->从列表中删除第一个value匹配值

        参数:value  需要删除的元素

        返回值:None

    ls = [0, '2', 'abc', 1, 1, 1]
    s = ls.remove(1)
    print(ls)
    print(s)
    

      输出:

    [0, '2', 'abc', 1, 1]
    None

      10.reverse(self)  ---->将列表逆置

        参数:None

        返回值:None

    ls = [0, '2', 'abc', 1, 1, 1]
    s = ls.reverse()
    print(ls)
    print(s)
    

      输出:

    [1, 1, 1, 'abc', '2', 0]
    None

     


     11.sort(self, key=None, reverse=False)  ---->对列表进行排序  若reverse指定为True则为从大到小排序

        参数: 

          key:待更新

          reverse:排序方式 默认为升序排列

        返回值:None

    ls = [4, 1, 3, 6, 7, 2]
    s = ls.sort()
    print(ls)
    print(s)
    s = ls.sort(reverse=True)
    print(ls)
    print(s)
    

      输出:

    [1, 2, 3, 4, 6, 7]
    None
    [7, 6, 4, 3, 2, 1]
    None

    (2)访问列表中的值:

      使用索引的方式访问列表:

    ls = ['baidu', 'souhu', 1995, 2018];
    print("ls[0]: ", ls[0])
    print("ls[1:5]: ", ls[1:5])
    

      输出:

    ls[0]:  baidu
    ls[1:5]:  ['souhu', 1995, 2018]

      获得列表中第一个值和最后一个值。

    ls = ['baidu', 'souhu', 1995, 2018];
    
    name, *_, year = ls     # *(星)代表name和year中间的所有元素的之赋值给 _(下划线)。
    
    print(name)
    print(_)
    print(year)
    

      输出:

    baidu
    ['souhu', 1995]
    2018

    (3)列表的更新:

    ls = ['baidu', 'souhu', 1995, 2018];
    print("ls[3]: ", ls[3])
    ls[3] = 1111
    print("更新后的ls[3]: ", ls[3])
    

      输出:

    ls = ['baidu', 'souhu', 1995, 2018];
    print("ls[3]: ", ls[3])
    ls[3] = 1111
    print("更新后的ls[3]: ", ls[3])

    (4)列表元素的删除:

    ls = ['baidu', 'souhu', 1995, 2018, 'test', 'hello', [1,2,3]]
    del ls[2]
    print(ls)
    ls.remove(2018)
    print(ls)
    ls.pop()
    print(ls)
    ls.clear()  #无论列表中有多少元素都全部删除
    print(ls)
    

      输出:

    ['baidu', 'souhu', 2018, 'test', 'hello', [1, 2, 3]]
    ['baidu', 'souhu', 'test', 'hello', [1, 2, 3]]
    ['baidu', 'souhu', 'test', 'hello']
    []

    (5)列表的操作符:

      列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。

      如下所示:

    Python 表达式结果描述
    len([1, 2, 3]) 3 长度
    [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 组合
    ['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重复
    3 in [1, 2, 3] True 元素是否存在于列表中
    for x in [1, 2, 3]: print(x, end=" ") 1 2 3 迭代

    (5)列表的遍历:

    list1 = ['abc', 123, (1, 2), [22, 33, 44, "ttt"]]
    
    for item in list1:
        print(item)
    

      输出:

    abc
    123
    (1, 2)
    [22, 33, 44, 'ttt']

    4、元祖:tuple

    元祖的创建方法:

    ages = (11, 22, 33, 44, 55)
    或
    ages = tuple((11, 22, 33, 44, 55))

    元祖的元素是有序的。

    Python 的元组与列表类似,不同之处在于元组的元素不能修改。

    元组使用小括号,列表使用方括号。

    (1)元祖常用方法:

      1.count(self, value)  ---->与列表中count函数相同

      2.index(self, value, start=None, stop=None)  ---->与列表中index函数相同


    (2)元祖的访问:

    tuple1 = ('baidu', 'souhu', 1995, 2018, 'test', 'hello', [1,2,3])
    
    print(tuple1[1])
    print(tuple1[2:4])
    

      输出:

    souhu
    (1995, 2018)

     

     获得元祖中第一个值和最后一个值。

    ls =('baidu', 'souhu', 1995, 2018)
    
    name, *_, year = ls     # *(星)代表name和year中间的所有元素的之赋值给 _(下划线)。
    
    print(name)
    print(_)                # 如果是元祖取出来的会是列表
    print(year)

      输出:

    baidu
    ['souhu', 1995]
    2018

    (3)元祖的修改和删除:

      元祖的直接子元素不能被修改和删除,但间接子元素可以被修改或删除

      元祖只能被整体删除。

    tuple1 = ('baidu', 'souhu', 1995, 2018, 'test', 'hello', [1,2,3])
    tuple1[6][1] = 666
    print(tuple1)
    

      输出:

    ('baidu', 'souhu', 1995, 2018, 'test', 'hello', [1, 666, 3])

    (4)元祖的运算符:

    与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。

    Python 表达式结果描述
    len((1, 2, 3)) 3 计算元素个数
    (1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 连接
    ('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') 复制
    3 in (1, 2, 3) True 元素是否存在
    for x in (1, 2, 3): print (x,) 1 2 3 迭代

    (5)元祖的遍历:

    tuple1 = ('abc', 123, (1, 2), [22, 33, 44, "ttt"])
    
    for item in tuple1:
        print(item)
    

      输出:

    abc
    123
    (1, 2)
    [22, 33, 44, 'ttt']

    5、字典:dict

    字典的创建:

    person = {"name": "zjs", 'age': 12}
    或
    person = dict({"name": "zjs", 'age': 12})

    字典中的元素是无序的

    (1)字典的常用方法:

    1.clear(self)  ---->清空字典内所有键值对与列表相同

        参数:无

        返回值:无

    >>> aDict = {'name': 'zjs', 'age':12, 'sex':'male'}
    >>> aDict.clear()
    >>> print(aDict)
    {}

    2.copy(self)  ---->对字典的浅拷贝与列表相同

        参数:无

        返回值:字典

    >>> aDict = {'name': 'zjs', 'age':12, 'sex':'male'}
    >>> bDict = aDict.copy()
    >>> print(aDict,bDict)
    {'sex': 'male', 'age': 12, 'name': 'zjs'} {'sex': 'male', 'age': 12, 'name': 'zjs'}
    

      


    3.keys(self)  ---->以列表方式返回字典的所有键

        参数:无

        返回值:dict_keys

    >>> aDict = {'name': 'zjs', 'age':12, 'sex':'male'}
    >>> print(aDict.keys())
    dict_keys(['sex', 'age', 'name'])
    

      


    4.values(self)  ---->与keys类似,返回字典的所有值

        参数:无

        返回值:dict_values

    >>> aDict = {'name': 'zjs', 'age':12, 'sex':'male'}
    >>> print(aDict.values())
    dict_values(['male', 12, 'zjs'])
    

      


    5.items(self)  ---->以列表的方式返回字典的键值对  每个键值对用元祖表示

        参数:无

        返回值:dict_items

    >>> aDict = {'name': 'zjs', 'age':12, 'sex':'male'}
    >>> print(aDict.items())
    dict_items([('sex', 'male'), ('age', 12), ('name', 'zjs')])
    

      


    6.get(self, k, d=None)  ---->获得字典指定键的值

        参数:

          k:指定的键

          d:如果指定键的值不存在时,返回该默认值值。

        返回值:无

    aDict = {'name': 'zjs', 'age': 12, 'sex': 'male'}
    name = aDict.get('name')
    grade = aDict.get('grade', 3)
    print(name,grade)
    

      输出:

    zjs 3

    7.update(self, E=None, **F)  ---->添加指定字典到该字典内如果字典内有该键则更新这个值

        参数:

          E:传入字典

          **F:传入若干关键字

        返回值:无

    aDict = {'name': 'zjs', 'age': 12, 'sex': 'male'}
    aDict.update({'grade': 3})    #传入字典
    print(aDict)
    aDict.update(age = 5, six=6)    #传入关键字
    print(aDict)
    

      输出:

    {'sex': 'male', 'age': 12, 'name': 'zjs', 'grade': 3}
    {'six': 6, 'sex': 'male', 'age': 5, 'name': 'zjs', 'grade': 3}

    8.pop(self, k, d=None)  ---->删除字典中指定的 键值对 k和与其对应的value并返回这个键  若k不存在则返回指定的d

        参数:

          k:删除指定的k

          d:若k不存在时候返回默认的d

        返回值:数字/字符串/字典/列表/元祖/.../

    aDict = {'name': 'zjs', 'age': 12, 'sex': 'male'}
    a = aDict.pop('name')
    print(a, aDict)
    b = aDict.pop('grade',3)
    print(b, aDict)
    

      输出:

    zjs {'sex': 'male', 'age': 12}
    3 {'sex': 'male', 'age': 12}

    9.popitem(self)  ---->随机删除字典中的键值对(通常删除末尾键值对)  

        参数:无

        返回值:元祖

    >>> aDict = {'name': 'zjs', 'age': 12, 'sex': 'male'}
    >>> aDict.popitem()
    ('sex', 'male')
    >>> print(aDict)
    {'name': 'zjs', 'age': 12}
    

    10.setdefault(self, k, d=None)  ---->设置k的缺省值如果d未指定则默认为None

        参数:无

        返回值:无

    >>> aDict = {'name': 'zjs', 'age': 12, 'sex': 'male'}
    >>> aDict.setdefault('a')
    >>> print(aDict)
    {'name': 'zjs', 'age': 12, 'sex': 'male', 'a': None}
    

      


    11.fromkeys(*args, **kwargs)  @staticmethod   ---->fromkeys()为静态方法,可以不声明对象直接调用

        参数:任意

        返回值:字典

    seq = ('name', 'age', 'sex')
    
    dict = dict.fromkeys(seq)
    print ("新的字典为 : %s" %  str(dict))
    
    dict = dict.fromkeys(seq, 10)
    print ("新的字典为 : %s" %  str(dict))
    

      输出:

    新的字典为 : {'age': None, 'name': None, 'sex': None}
    新的字典为 : {'age': 10, 'name': 10, 'sex': 10}

    (2)访问字典里的值

    由于字典中的键值对是无序的。所以不能使用下标来访问字典内的值,只能通过键来查找所对应的值

    aDict = {'name': 'zjs', 'age': 12, 'sex': 'male'}
    
    print(aDict['name'])
    print(aDict.get('age'))
    

      输出:

    zjs
    12

    使用get与索引方式访问字典的值的区别是:如果访问一个不存在的键使用索引方式会报错,而get方法不会报错。除非get方法中指定一个默认值,否则返回None

    (3)修改字典里的值

    字典的值只能通过键值来修改

    aDict = {'name': 'zjs', 'age': 12, 'sex': 'male'}
    aDict['name'] = 'zhang'
    print(aDict)
    

      输出:

    {'sex': 'male', 'name': 'zhang', 'age': 12}

    (4)删除字典的元素

    aDict = {'name': 'zjs', 'age': 12, 'sex': 'male', 'grade': 3, 'six': 6}
    del aDict['name']   #删除指定键的键值对 若键不存在则会抛出异常
    print(aDict)
    t1 = aDict.pop('six')   #删除指定的key对应的键值对返回key对应的值,若指定的key不存在则返回指定的缺省值默认为None
    print('删除的元素为:', t1)
    print(aDict)
    t2 = aDict.popitem()    #随机删除一个 并返回删除的元素
    print('删除的键为:', t2)
    aDict.clear()  #无论字典中有多少键值对都全部删除
    print(aDict)
    

      输出:

    {'sex': 'male', 'age': 12, 'grade': 3, 'six': 6}
    删除的元素为: 6
    {'sex': 'male', 'age': 12, 'grade': 3}
    删除的键为: ('sex', 'male')
    {}

    (5)字典的遍历

      1.通过键来遍历:

    dict1 = {'name': 'zjs', 'age':12, 'sex':'male'}
    
    for item in dict1:
        print(item,dict1[item])
    

      输出:

    name zjs
    sex male
    age 12

      等价于:

    for item in dict1.keys():
        print(item, dict1[item])
    

      输出:

    name zjs
    age 12
    sex male
    

      2.只获取字典的值:

    dict1 = {'name': 'zjs', 'age':12, 'sex':'male'}
    
    for item in dict1.values():
        print(item)
    

      输出:

    12
    zjs
    male

      3.对字典的键值的获取:

    dict1 = {'name': 'zjs', 'age':12, 'sex':'male'}
    
    for key, value in dict1.items():
        print(key, value)
    

      输出:

    sex male
    age 12
    name zjs

    (6)字典的特性

    • 字典可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
    • 两个重要的点需要记住:

        1)不允许同一个键出现两次。创建时如果同一个键被赋值多次,只有最后一个值会被记住。

        2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。

        1.实例:

    dict1 = {'name': 'zjs', 'Age': 7, 'name': 'zhang'}
    print(dict1)
    
    dict2 = {True: 'b', 1.0: 'a', 1: 'c'}
    print(dict2)
    

        输出:

    {'name': 'zhang', 'Age': 7}
    {True: 'c'}

        2.实例:

    dict1 = {['Name']: 'zjs', 'Age': 12}
    
    print (dict1)
    

        输出:

    Traceback (most recent call last):
      File "E:/zjs/Python/pythonTest/day01/day01/d1.py", line 73, in <module>
        dict1 = {['Name']: 'zjs', 'Age': 12}
    TypeError: unhashable type: 'list'

     


     6、集合:set

      集合(set)是一个无序不重复元素的序列。

      基本功能是进行成员关系测试和删除重复元素。

      可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

      

    set1 = {1,2,3,4,5,3,'a','zjs',(1,3,'q')}
    

      或

    set1 = set([1,2,3,4])
    

      不可变集合使用frozenset():

    frozenset1 = frozenset([1,2,3,4])
    

      

      (1)集合的常用方法

      等价操作符 说明
    所有集合类型
    len(s)   集合基数:集合s中元素个数
    set([obj])   可变集合工厂函数:ojb必须是支持迭代的,由obj中的元素创建集合,否则创建一个空集合
    frozenset([obj])   不可变集合工厂函数:执行方式好set()方法相同,但它返回的是不可变集合
      obj in s 成员测试
      obj not in s 非成员测试
      s == t 等价测试
      s != t 不等价测试
      s < t (严格意义上)子集测试
    s.issubset(t) s <= t 子集测试
      s > t (严格意义上)超集测试
    s.issuperset(t) s >= t 超集测试
    s.union(t) s | t 合并操作
    s.intersec-tion(t) s & t 交集操作
    s.difference(t) s – t 差分操作
    s.symmetric_fifference(t) s ^ t 对称差分操作
    s.copy()   赋值操作:返回s的(浅复制)副本
    仅适用于可变集合
    s.update(t) s |= t (Union)修改操作:将t中的成员添加s
    s.intersection_update(t) s &= t 交集修改操作:s中仅包括s和t中共有的成员
    s.difference_update(t) s -= t 差修改操作:s中仅包括属于s但不属于t的成员
    s.symmetric_difference_ update(t) s ^= t 对称差分修改操作:s中包括仅属于s或仅属于t的成员
    s.add(obj)   加操作:将obj添加到s
    s.remove(obj)   删除操作
    s.discard(obj)   丢弃操作:remove()的友好版本,如果s中存在ojb,从s中删除它
    s.pop()   pop操作:移除并返回s中的任意一个值
    s.clear()   清除操作:移除s中的所有元素


    # set可以进行集合运算 a = set('zjs') b = set('zhang') print(a) print(a - b) # a和b的差集 print(a | b) # a和b的并集 print(a & b) # a和b的交集 print(a ^ b) # a和b中不同时存在的元素

      输出:

    {'d', 'r', 'c', 'a', 'b'}
    {'b', 'r', 'd'}
    {'b', 'z', 'd', 'l', 'c', 'r', 'm', 'a'}
    {'c', 'a'}
    {'b', 'z', 'd', 'l', 'r', 'm'}

    7、布尔值:bool

    bool类型是int的子类

    只有 True (真)和 False (假)两个值

    只有 '' (空字符串)、""(空字符串)、None(空值)、0(数字零)、 0.0(浮点数0.0)、[](空列表)、()(空元祖)、{}(空字典)为False其余所有值都为True

  • 相关阅读:
    CSS3 @media 查询(制作响应式布局)
    seajs学习
    LABjs、RequireJS、SeaJS 区别
    jquery知识简单运用
    jquery拖拽
    选项卡简单版
    手风琴,回到顶部,无限运动
    分步运动
    多图片放大显示
    测试定时器、获取字符串的字节长度
  • 原文地址:https://www.cnblogs.com/zbuter/p/8687526.html
Copyright © 2011-2022 走看看