列表(List)
- 特性:可变,是序列
- 列表用方括号定义,元素没有类型限制
修改列表
列表的元素重新赋值方式:索引和切片
lst = [567, 'hello', 78.9, 'world', False]
针对一个元素: 格式: lst[index] = object
lst[2] = 9.87
lst[3] = 'dlrow'
print(lst)
针对多个元素: 格式: lst[start: end: step] = iterable
1 vs 1
lst[2:3] = [9.87]
n vs n
lst[2:4] = [9.87, 'dlrow'] # lst[2] = 9.87 ; lst[3] = 'dlew'
1 vs n 【必须step为1】
lst[2:3] = [7, 8, 9] # lst[2] = [7, 8, 9]
n vs m 【必须step为1】
lst[2:4] = [1, 2, 3] lst[1:4] = [1, 2]
1 vs 0 【必须step为1】
lst[2:3] = []
n vs 0 【必须step为1】
lst[1:4] = []
n vs n 【必须step不为1】
lst[1::2] = ['a', 'b']
插入一个元素
lst[0:0] = ['a']
lst[1:1] = ['b']
lst[len(lst):] = ['c']
插入多个元素
lst[0:0] = ['a', 'b', 'c']
lst[1:1] = ['d', 'f']
lst[len(lst):] = ['x', 'y', 'z']
print(lst)
list([iterable])
- 将一个iterable对象转化为列表并返回
print(list()) # []
print(list("hello")) #['h', 'e', 'l', 'l', 'o']
print(list((1, 2, 3))) #[1, 2, 3]
# 字典作为一个iterable, 只有键参与迭代
print(list({1: 2, 3: 4})) #[1, 3]
列表方法:
list.append(object)
- 往列表中追加一个元素,无返回值
- 相当于 lst[len(lst):] = [object]
lst = [1, 2, 3]
lst.append(4)
print(lst) #[1, 2, 3, 4]
lst[len(lst):] = [4] #object这个位置不能用于添加列表
print(lst) #[1, 2, 3, 4, 4]
lst.append([5, 6])
print(lst) #[1, 2, 3, 4, 4, [5, 6]]
list.extend(iterable)
- 使用 iterable 中的所有元素来扩展列表,无返回值
- 相当于 lst[len(lst):] = iterable
lst = [1, 2, 3]
lst.extend([5, 6])
print(lst) # [1, 2, 3, 5, 6]
lst[len(lst):] = [5, 6]
print(lst) #[1, 2, 3, 5, 6, 5, 6]
list.insert(index, object)
- index:要插入元素的位置
- object:要插入的元素
- 在指定位置插入一个元素,无返回值
- 相当于lst.extend([a, b])
- 单个字符时,相当于lst.append(4),也相当于lst[len(lst):] = [4]
lst = [1, 2, 3, 4]
lst.insert(1, ['a', 'b']) # [1, ['a', 'b'], 2, 3, 4]
print(lst)
lst.insert(len(lst), ['a', 'b'])
print(lst) # [1, ['a', 'b'], 2, 3, 4, ['a', 'b']]
list.sort( [key], reverse=False)
- key:指定一个函数,在排序之前,列表每个元素先应用这 个函数,再根据函数的返回值对原数据进行排序
- 对原列表进行排序,无返回值
lst = [1, 2, -5, -3]
# 降序排序
lst.sort(reverse=True)
print(lst) #[2, 1, -3, -5]
lst.sort(key=abs, reverse=True)
print(lst) #[-5, -3, 2, 1]
sorted(iterable, [key], reverse=False)
- iterable:要排序的可迭代对象
- key:指定一个函数,在排序之前,每个元素都先应用这个 函数之后再排序
- reverse:默认为 False,代表升序,指定为 True 则为降序 对可迭代对象进行排序,以列表形式返回排序之后的结果
list.reverse()
- 把列表中的元素倒过来,无返回值
lst = [1, 3, 5, 2]
lst.reverse()
# print(lst)
lst = [1, 3, 5, 2]
print(lst[::-1]) # copy
list.count(x)
- 返回元素 x 在列表中出现的次数
lst = [1, 2, 3, '23', [2, 4]]
print(lst.count(2)) # 1
list.index(x[, start[, end]])
- x:要找的值
- start:起始索引,默认为 0
- end:结束索引(开区间),默认为 len(lst)
- 返回从左边开始第一次找到指定值时的正向索引,找不到报错
lst = [1, 2, 3, 2, '23', [2, 4]]
print(lst.index(2)) #1
lst.index(2, 4) # ValueError
list.pop(i=-1)
- i:要删除并返回的元素的索引
- 删除列表中指定索引的元素并返回该元素,默认最后一个
- 索引超出范围,则报错
lst = [567, 'hello', True, False, 456]
print(lst.pop(1)) # 'hello'
print(lst) # [567, True, False, 456]
list.remove(x)
- 删除列表中从左往右遇到的第一个x元素,无返回值
- 如果没有这样的元素,则报错
lst = [1, 2, 4, 2, 3, 3]
lst.remove(2)
lst.remove(2)
lst.remove(2) #ValueError
print(lst)
list.copy()
- 返回该列表的一个副本
- 等价于 lst[:]
lst = [567, 'hello', True, False, 456]
new_lst = lst.copy()
print(new_lst) #[567, 'hello', True, False, 456]
list.clear() 移除列表中的所有元素,无返回值 等价于 del lst[:]
lst = [567, 'hello', True, False, 456]
lst.clear()
print(lst) # []
其他常用方法
chr(i)
- 返回Unicode码位为指定整数的字符
ord(c)
- 返回指定字符对应的Unicode码位
abs(number)
- 内置函数,返回number的绝对值
print(chr(97)) # 'a'
print(ord('a')) # 97
print(abs(-9)) # 9
print(abs(3+4j)) # 求模, (3^2 + 4^2)^(1/2) = 5.0