列表的简单定义
列表相当于其他语言中的数组,但数组中的元素只能是同一类型,而列表不一样,可以是不一样的类型。
列表的创建
创建列表时,使用[]进行创建,并且在元素间使用,进行分隔
test=['abc',1,'sgd']
也可以使用内置函数list()
lst1 = list(range(10))
lst2 = list([1,'36df'])
列表的特点
列表元素按顺序有序排列
索引映射唯一一个数据
列表可以储存重复数据
可以混存任意数据类型
根据需要动态分配和回收内存
索引为负时,表示从列表最后开始找元素,例如list[-1]表示最后一个元素,list[-2]表示倒数第二个元素
索引从0开始
列表的查询操作
获取指定元素的索引(index())
使用index()函数
list=['hello','you','yes','no','you']
print(list.index('you')) #输出1
print(list.index('green')) #抛出一个ValueError错误
#在列表中指定的一部分中查找
#这里表示从列表索引位置2-4里面找,即'yes','no','you'中找,返回4
print(list.index('you',2,5))
注意:当列表中有多个指定元素时,返回找到的第一个指定元素的索引,当指定元素不在列表中时,抛出一个ValueError错误;还可以在列表中指定的一部分中查找
获取列表中的单个元素
正向索引:从0 到 n-1
逆向索引:从-n到-1
获取列表中的多个元素
使用切片,list[start:stop:步长],从start开始到stop,不包含stop,步长如果没有设定,默认为1
切片的结果是原列表的拷贝
list=['hello','you','yes','no',1,2,6,8,9]
print(list[:])#切片结果是整个列表
#省略开始,则从列表最开始开始切片,得到['hello', 'you', 'yes']
print(list[:3:1])
#省略m末尾,则切片一直切到列表末尾,得到['yes', 'no', 1, 2, 6, 8, 9]
print(list[2::1])
注意,步长可以是负数,此时从start开始往前切片
#步长为负数
#从索引3的位置,向前切片,一直到索引1的位置的前一个元素,得到['no', 'yes']
print(list[3:1:-1])
#从列表最后一个元素开始,向前切片,一直到索引4的位置的前一个元素,得到[9, 8, 6, 2]
print(list[:4:-1])
#从索引2的位置,向前切片,一直到列表开始,得到['yes', 'you', 'hello']
print(list[2::-1])
#倒序输出列表
print(list[::-1])
切片也可以用于复制列表
list1=[1,2,3,4,5]
#复制列表
list2=list1[:]
注意不能直接list1=list2,不然对list2的操作也会到list1上
判断元素是否在列表中
可以用in和not in来判断
list=['yes','no']
#判断'you'是否在列表中
if 'you' in list:
print('NO!')
#判断'you'是否不在列表中
if 'you' not in list:
print('NO!')
列表元素的遍历
可以用for - in 循环来遍历
list=['you','are','not','a','good','man']
#遍历输出列表list中的元素
for item in list:
print(item)
对列表的操作
增加列表元素
append()和extend()
在列表最后增加一个元素
list=['you','are','not','a','good','man']
#在列表最后增加一个元素a
#得到['you', 'are', 'not', 'a', 'good', 'man', 'a']
list.append('a')
print(list)
#将一个列表作为一个元素直接添加到列表末尾
#得到['you', 'are', 'not', 'a', 'good', 'man', [1, 2]]
b=[1,2]
list.append(b)
print(list)
而如果想要将一个列表中的元素添加到另一个列表的末尾,则使用extend()函数
list=['you','are','not','a','good','man']
#将一个列表中的元素添加到另一个列表末尾
#得到['you', 'are', 'not', 'a', 'good', 'man', 1, 2]
b=[1,2]
list.extend(b)
print(list)
insert()
在列表任意位置插入一个元素
list.insert(6,'!')
#在索引位置6上添加元素
#得到['you', 'are', 'not', 'a', 'good', 'man', '!']
list.insert('!')
#如果添加的对象是一个列表,此时也是将列表作为一个元素
b=[4,6]
#在索引位置5上添加列表b
#得到['you', 'are', 'not', 'a', 'good', [4, 6], 'man', '!']
list.insert(5,b)
切片
在任意位置添加很多元素
list=['you','are','not','a','good','man']
b=[4,6]
#在列表list索引位置1往后的元素切掉,再拼接上列表b的元素
#得到['you', 4, 6]
list[1:]=b
list=['you','are','not','a','good','man']
b=[4,6]
#在列表list索引位置4上添加列表b的元素
#得到['you', 'are', 'not', 'a', 4, 6, 'good', 'man']
list[4:4]=b
list=['you','are','not','a','good','man']
b=[4,6]
#将列表list索引位置3、4上的元素替换为列表b的元素
#得到['you', 'are', 'not', 4, 6, 'man']
list[3:5]=b
print(list)
删除列表元素
remove()
删除给定的一个元素,并且一次只删除一个,列表中有多个给定的元素时,只删除第一个
list=['you','are','not','a','good','man','a']
#删除list中的一个元素a
#得到['you', 'are', 'not', 'good', 'man', 'a']
list.remove('a')
print(list)
元素不存在时抛出ValueError
pop()
删除给定位置上的元素并且返回这个元素 ,当没有给索引时,删除列表最后一个元素
list=['you','are','not','a','good','man','!']
#删除list中索引位置为4的元素
#输出['you', 'are', 'not', 'a', 'man', '!'] good
a=list.pop(4)
print(list,a)
list=['you','are','not','a','good','man','!']
#删除list中最后一个元素
#输出['you', 'are', 'not', 'a', 'good', 'man'] !
a=list.pop()
print(list,a)
切片
一次删除多个元素
list=['you','are','not','a','good','man','!']
#删除list中索引位置为2,3,4的元素
#输出['you', 'are', 'man', '!']
list[2:5]=[]
print(list)
clear()和del()
clear()清除列表,将列表变为空列表,但列表还存在
del()直接将列表删除,列表不再存在
修改列表元素
修改指定元素
修改指定索引位置的值
list=['you','are','not','a','good','man','!']
#将索引位置2上的元素修改
#得到['you', 'are', 'really', 'a', 'good', 'man', '!']
list[2]='really'
print(list)
修改指定切片
利用切片的方法一次修改多个值
list=['you','are','not','a','good','man','!']
#将索引位置3,4,5上的元素修改
#得到['you', 'are', 'not', 1, 2, 3, '!']
list[3:6]=[1,2,3]
print(list)
对列表进行排序
sort()方法
调用sort()方法,默认将列表中元素按照从小到大排序,可以使用reverse=TRUE来进行降序排序
list=['a','f','d','r','s','c','d']
#升序排序
#得到['a', 'c', 'd', 'd', 'f', 'r', 's']
list.sort()
print(list)
#降序排序
#得到['s', 'r', 'f', 'd', 'd', 'c', 'a']
list.sort(reverse=True)
print(list)
sorted()
内置函数sorted()也是默认将列表中元素按照从小到大排序,可以使用reverse=TRUE来进行降序排序,但这个函数不会改变原来的列表,而是返回一个新的被排序后的列表
list=['a','f','d','r','s','c','d']
#升序排序
#得到list1为['a', 'c', 'd', 'd', 'f', 'r', 's']
#原列表不变
list1=sorted(list)
print(list1)
#降序排序
#得到list2为['s', 'r', 'f', 'd', 'd', 'c', 'a']
#原列表不变
list2=sorted(list,reverse=True)
print(list2)
列表生成式
即生成列表的公式
格式:[表示列表元素的表达式 for 自定义变量 in 可迭代对象]
#使用列表生成式得到[3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
list=[i+3 for i in range(10)]
print(list)