一,基本概念
列表的就是一种集成体,可以包含很多数字和字符串或其他数据类型,如
list1 = ['china' , 1 , 2 , 'chick']
特点:包含的元素可变,为序列
由于可变和不可变的区别带来的操作区别 列表的元素是可变的,不像字符串、数字等类型是不可变的。 在字符串里面对字符串里面的内容进行增删改的时候,是把原字符串复制一个新的后再增删改然后再返回的这个新的,原始的那个字符串是没有发生变化的; 但在列表这种可变的数据类型里面,在进行增删改的时候,除非是特殊操作,否则一般都是在原列表的基础上修改,而不是复制一个新的再去改
二,修改列表
根据列表的特点,那我们可以通过索引和切片的方式来对列表中的元素进行修改
list1 = [123, "e", "l", "l", "o", " ,", "C","h", "i", "c", "k"]
list1[1] = 'hello'
print(list1)
list1[0:2] = [000,'hello']
输出为
[123, 'hello', "l", "l", "o", " ,", "C","h", "i", "c", "k"]
[000, 'hello', "l", "l", "o", " ,", "C","h", "i", "c", "k"]
三,内置函数
list([iterable])
- 作用:将一个可迭代对象iterable(见6. 字符串详解)转化成列表并返回
print(list("China"))
print(list((1, 2, 3)))
输出为
['C', 'h', 'i', 'n','a']
[1, 2, 3]
四,列表对象方法
1,增
(1)list.append(x)
作用:在列表的末尾加一个元素(注意是在原列表上修改,无返回值,下同)
list1 = [123, "e"]
list1.append(666)
print(list1)
list1.append([1, 2])
print(list1)
输出为
[123, 'e', 666]
[123, 'e', 666, [1, 2]]
(2)list.extend(iterable)
作用:使用可迭代对象 iterable 中的所有元素来扩展列表
list1 = [123, "e"]
list1.extend('666')
print(list1)
list1.extend([1, 2])
print(list1)
输出为
[123, 'e', '6', '6', '6']
[123, 'e', '6', '6', '6', 1, 2]
(3)list.insert(i, x)
作用:在索引i处插入传入的x
list1 = [123, 'e', '6', '6', '6']
a = ['chic' , 1 , 3]
list1.insert(2, a)
print(list1)
输出为
[123, 'e', ['chic', 1, 3], '6', '6', '6']
2,改
(1) list.sort( [key], reverse=False)
作用:
- 对作用的列表进行排序;
- reverse默认为False代表升序,给True代表降序;
- key是给一个函数,先对每个元素应用这个函数,再根据这个函数得出的数据对原元素排序
num_list = [1, -2, 5, -3]
num_list.sort()
print(num_list)
num_list.sort(reverse=True)
print(num_list)
num_list.sort(key=abs) #取绝对值
print(num_list)
输出为
[-3, -2, 1, 5]
[5, 1, -2, -3]
[1, -2, -3, 5]
和sorted函数的区别,sorted函数定义如下sorted(iterable, [key], reverse=False) (1)使用方式不同:对象方法sort是要对象.sort去使用,sorted函数是把要作用的对象作为可迭代对象iterable传入 (2)返回值不同:对象方法sort在原数据上修改,不返回值;sorted不对原数据操作,有返回值
sorted使用方法如下
num_tup = (1, -2, 5, -3)
result = sorted(num_tup, reverse=False)
print(result)
(2)list.reverse()
作用:对列表中的元素反向
num_list = [1, -2, 5, -3]
num_list.reverse()
print(num_list)
输出为
[-3, 5, -2, 1]
和reversed(reversed(seq))区别: (1)list.reverse是只针对列表的,对原数据进行操作,无返回值 (2)reversed 是针对序列的,不对原数据操作,返回一个反向迭代器(就是倒过来遍历数据的)
3,查
(1)list.count(x)
作用:返回x在列表中出现的次数
(2)list.index(x[, start[, end]])
作用:返回列表中第一次出现x的位置索引;start和end代表查找列表的开始结束索引
num_list = [1, -2, 5,5, -3,9]
print(num_list.index(5))
print(num_list.index(5,3,5))
输出为
2
3
4,删
(1)list.pop([i])
作用:删除列表中索引i的元素,并将该元素返回;未设置i,则指定列表最后一个元素
num_list = [1, -2, 5,5, -3,9]
print(num_list.pop(2))
print(num_list)
输出为
5
[1, -2, 5, -3, 9]
(2)list.remove(x)
作用:移除列表中第一个匹配到的值为 x 的元素(修改原列表,无返回值);没找到返回ValueError 异常
num_list = [1, -2, 5,3, -3,5]
num_list.remove(5)
print(num_list)
输出为
[1, -2, 3, -3, 5]
(3)list.clear()
作用:移除列表中的所有元素(修改原列表,无返回值)
5,其他
(1)list.copy()
返回列表的一个浅拷贝(暂时理解成就是复制了一份)