列表相当于其他语言中的数组,但数组中的元素只能是同一类型,而列表不一样,可以是不一样的类型。
列表的创建创建列表时,使用[]进行创建,并且在元素间使用,进行分隔
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)



