列表
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次,返回新的列表。
- append(),为列表添加一个元素,比如:
- 删除元素:
- remove(value),从左至右查找第一个匹配value的值,移除该元素,并返回None。
- remove()会就地修改列表,其时间复杂度为O(n)。
- pop([index]):
- 如未指定索引,就从列表尾部弹出一个元素;时间复杂度为O(1)。
- 如指定索引,就从所引处弹出一个元素,索引超界则抛出IndexError错误;时间复杂度为O(n)。
- clear(),删除列表中所有的元素,剩下一个空列表。
- remove(value),从左至右查找第一个匹配value的值,移除该元素,并返回None。
- 修改元素:
- list[index] = value(),通过索引赋值。
- 如果索引越界,则会抛出异常(InderError)。
- list[index] = value(),通过索引赋值。
- 查询元素:
- 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,是否反转。
- key,排序用的key,涉及高阶函数,比如:
- 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 作者:闻骏