列表


01.list是一个可变的,有序的,可重复的元素的集合。

  • 列表的基本概念:
    • 列表是一个排列整齐的队列。
    • 列表中的元素可以是任意数据类型(数值,字符串,对象,列表等)。
    • 列表中的元素有顺序,可以使用索引。
    • 列表属于线性的数据结构。
    • 列表是一个可迭代的对象。
  • 列表的定义方法:
    • 使用中括号定义,比如:new_list = ["wenjun", "shengjianzhou "]
      • 使用空的中括号会定义一个空的列表。
    • 使用list()函数定义,比如:new_list = list(range(10))
      • list()函数仅可接受一个参数,该参数为一个可迭代对象。
      • list()函数可定义一个空列表。
  • 列表的索引访问:
    • 列表的元素的顺序称为索引,也叫下标;索引分为正负索引:
      • 正索引,从左至右,从0开始,为列表中每一个元素编号。
      • 负索引,从右至左,从-1开始,为列表中每一个元素编号。
      • 正负索引不可以超界,否则引发异常(IndexError)。
    • 列表可以通过索引访问,其格式为:list[index]


02.列表的内置方法:

  • 添加元素:
    • append(),为列表添加一个元素,比如:
      my_list = [1, 2, 3]
      my_list.append(4)
      print(my_list)
      • append()会在列表的尾部追加元素,并返回None;表示没有新的列表产生,就地修改。
      • append()的时间复杂度是O(1)。
    • insert(index, object),为列表插入一个元素,比如:
      my_list = [1, 2, 3]
      result = my_list.insert(1, 'wenjun')
      print(my_list)
      print(result)
      • insert()在指定的索引index处插入元素;返回None就意味着没有新的列表产生,就地修改。
      • insert()的时间复杂度为O(n)。 -
      • insert()的索引可以越界;如果超越上届,则在尾部追加,如果超越下届,则在头部追加。
    • extend(iterable),为列表插入多个元素,比如:
      number = range(5, 10)
      my_list = [1, 2, 3]
      result = my_list.extend(number)
      print(my_list)
      • extend()的参数为一个可迭代对象。
      • extend()的返回值为None,表示就地修改。
      • +,将两个列表连接起来,产生新的列表,原列表不变;其本质是是调用add()方法。
      • *,重复操作,将本列表元素重复n次,返回新的列表。
  • 删除元素:
    • remove(value),从左至右查找第一个匹配value的值,移除该元素,并返回None。
      • remove()会就地修改列表,其时间复杂度为O(n)。
    • pop([index]):
      • 如未指定索引,就从列表尾部弹出一个元素;时间复杂度为O(1)。
      • 如指定索引,就从所引处弹出一个元素,索引超界则抛出IndexError错误;时间复杂度为O(n)。
    • clear(),删除列表中所有的元素,剩下一个空列表。
  • 修改元素:
    • list[index] = value(),通过索引赋值。
      • 如果索引越界,则会抛出异常(InderError)。
  • 查询元素:
    • list[index],通过索引返回列表中的元素。
    • index(value, [start, [stop]]),通过value,从指定区间查找列表内的元素是否匹配,比如:
      my_list = [1, 2, 3]
      result = my_list.index(2, 0, -1)
      print(result)
      • 如果匹配(第一次),则立即返回索引;如果不匹配,则抛出ValueError异常。
      • index()的时间复杂度为O(n),查询时间随着列表增大而增加。
    • count(value),返回列表中匹配到value的次数。
      • count()的时间复杂度为O(n),查询时间随着列表增大而增加。
    • len(list),返回列表的长度。


03.列表的其他操作:

  • reverse(),将列表中的元素就地反转,并返回None。
  • sort(),将列表中的元素按照升序排列,就地修改,其参数包括:
    • key,排序用的key,涉及高阶函数,比如:
      my_list = [1, 2, 3, 'wenjun', 'shengjianzhou']
      my_list.sort(key=str)
      print(my_list)
    • reverse,是否反转。
  • in/not in,判断元素是否是列表的元素,返回为True或False。



列表解析式


01.列表解析式:

  • 列表解析式指使用特定语句返回一个新的列表,其格式为:
[返回值 for 元素 in 可迭代对象 if 条件]
  • 列表解析式是一种语法糖,其优化提高了效率也调高了代码的可读性。
  • 列表解析式无法处理有else的情况。
  • 列表解析式的示例:
newList = [(i+1)**2 for i in range(10) if i % 2 == 0]
print(newList)

newList = [{x: y} for x in 'abcde' for y in range(20) if y > 0 if y % 2 == 0 if y % 3 == 0 ]
for i in newList:
    print(i)
文档更新时间: 2020-05-22 14:50   作者:闻骏