Python学习记录(二)--列表和元组

时间:2022-05-18 02:59:40

1、 6种内建序列
  列表 元组 字符串 Unicode字符串 buffer对象 xrange对象

2、 通用序列操作
  索引:序列的所有元素都是有编号的,从0开始递增
    >>>greeting = "hello"
    >>>greeting[0]
    'h'
    >>>greeting[-1]
    'o'
    >>>greeting[-2]
    'l'

  分片:用来访问一定范围内的元素
    >>> tag='abcdefghijklmnopqrstuvwyz'
    >>> tag[9:20]
    'jklmnopqrst'
    >>> tag[20:-2]
    'uvw'
    >>> tag[1:5:2] // 1是开始位置 5是结束位置 2是步长
    'bd'

  序列相加:使用+可以进行序列的连接操作
    >>> tag = [1, 2,3]
    >>> tag2= [4,5,6]
    >>> tag + tag2
    [1, 2, 3, 4, 5, 6]
    >>> tag3 = [1,2]
    >>> tag+tag3
    [1, 2, 3, 1, 2]

  相乘:以数字x乘以一个序列会生成新的序列,而在新的序列中,原来的序列将被重复x次
    >>> 'python'*5
    'pythonpythonpythonpythonpython'
    >>> [42]*5
    [42, 42, 42, 42, 42]

  成员资格:检查一个值是否在序列中,使用in运算符
    >>> test
    'hello,world!'
    >>> 'h' in test
    True
    >>> 'y' in test
    False

  长度len、最大值max、最小值min:
    >>> nums = [2,4,1,5,7]
    >>> len(nums)
    5
    >>> max(nums)
    7
    >>> min(nums)
    1
    >>> str='abcd1'
    >>> len(str)
    5
    >>> max(str)
    'd'
    >>> min(str)
    '1'

3、 列表
  列表是可变的mutable, 可以改变列表的内容

  list函数:
      >>> list('hello')
      ['h', 'e', 'l', 'l', 'o']
      >>> list(1234)
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      TypeError: 'int' object is not iterable

  列表元素赋值:
      >>> x=list('11111')
      >>> x
      ['1', '1', '1', '1', '1']
      >>> x[0]=2
      >>> x
      [2, '1', '1', '1', '1']
      >>> x[1]='str'
      >>> x
      [2, 'str', '1', '1', '1']

  删除元素: del 删除单个元素或者部分元素
      >>> x
      [2, 'str', '1', '1', '1']
      >>> del x[3]
      >>> x
      [2, 'str', '1', '1']

      >>> name
      ['p', 'e', 'y', 'i', 'l', 'i', 'a']
      >>> del name[2:]
      >>> name
      ['p', 'e']

  分片赋值:可增加长度、替换中间元素、删除元素、
      >>> name = list('perl')
      >>> name
      ['p', 'e', 'r', 'l']
      >>> name[2:]='yilia'
      >>> name
      ['p', 'e', 'y', 'i', 'l', 'i', 'a']

 

  列表方法: 对象.方法(参数)
    (1)append:
        >>> name
        ['p', 'e']
        >>> name.append('yilia')
        >>> name
        ['p', 'e', 'yilia']
        >>> name.append(2)
        >>> name
        ['p', 'e', 'yilia', 2]
    (2)count: 统计某个元素在列表中出现的次数
        >>> x = [[1,2],1,3,4,5,[3,4]]
        >>> count[1]
        >>> x.count(1)
        1
        >>> x.count(2)
        0
        >>> x.count(3)
        1

    (3)extend: 操作对象不可以直接是字符串

        >>> a = 'python'
        >>> b = 'language'
        >>> a.extend(a)
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        AttributeError: 'str' object has no attribute 'extend'
        >>> a.extend(b)
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        AttributeError: 'str' object has no attribute 'extend'
        >>> list(a)
        ['p', 'y', 't', 'h', 'o', 'n']
        >>> a = list(a)
        >>> b = list(b)
        >>> a.extend(b)
        >>> a
        ['p', 'y', 't', 'h', 'o', 'n', 'l', 'a', 'n', 'g', 'u', 'a', 'g', 'e']

    (4)index: 求某个字符的索引
        >>> a = [12, 3, 2, 34, 21, 4]
        >>> a.index(12)
        0
        >>> a.index(5)
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        ValueError: 5 is not in list

    (5)insert:将对象插入到列表
        >>> a
        [12, 3, 2, 34, 21, 4]
        >>> a.insert(3,"yes")
        >>> a
        [12, 3, 2, 'yes', 34, 21, 4]

    (6)pop: 移除列表中的元素(默认是最后一个元素),并且返回该元素 栈:后进先出
        >>> a
        [12, 3, 2, 'yes', 34, 21, 4]
        >>> a.pop()
        4
        >>> a.pop(3)
        'yes'
        >>> a
        [12, 3, 2, 34, 21]

    (7)remove: 移除列表中某个值的第一个匹配项 (无返回值)
        >>> a
        [12, 3, 'who', 2, 'is', 34, 21]
        >>> a.remove(2)
        >>> a
        [12, 3, 'who', 'is', 34, 21]
        >>> a.remove('id')
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        ValueError: list.remove(x): x not in list
        >>> a.remove('is')
        >>> a
        [12, 3, 'who', 34, 21]

    (8)reverse: 将列表中的元素反向存放 (无返回值)
        >>> a
        [12, 3, 'who', 34, 21]
        >>> a.reverse()
        >>> a
        [21, 34, 'who', 3, 12]

  P58 (9)sort: 对原序列进行排序,不生成新的序列
        >>> a = [1, 3,5,2,6,4,4]
        >>> b = a.sort()
        >>> a
        [1, 2, 3, 4, 4, 5, 6]
        >>> b

    #以上方法对b赋值无效,需要采用以下方法

      >>> b = a
      >>> b.sort
      <built-in method sort of list object at 0x7f97d091fd88>
      >>> b.sort()
      >>> b
      [1, 2, 3, 4, 4, 5, 6]

      >>> c = [2, 9, 4, 3, 6, 4]
      >>> d = sorted(c)
      >>> c
      [2, 9, 4, 3, 6, 4]
      >>> d
      [2, 3, 4, 4, 6, 9]

  (10)高级排序:
      cmp(x,y): x>y 正数 ; x<y 负数 ; x=y 0
      key=len

      >>> a = [1, 'aa', 'b', 'aaaaaa', 'aaa']
      >>> a.sort(cmp)
      >>> a
      [1, 'aa', 'aaa', 'aaaaaa', 'b']

4、元组
  不可变序列, 通常用括号来表示

    >>> 1,2,3
    (1, 2, 3)

  #空元组
    >>> ()
    ()

  #一个元素的元组需要加,
    >>> 42,
    (42,)

  (1)tuple函数:以一个序列作为参数并把它转化为元组
      >>> tuple([1,2,3])
      (1, 2, 3)
      >>> tuple('abc')
      ('a', 'b', 'c')
  (2)元组并不复杂,除了创建和访问元组元素外,无其它太多操作