List
-
字面量
[元素1,元素2,元素3,·······]
-
定义变量
变量名 = [元素1,元素2,元素3,·······]
-
定义空列表
变量名 = [ ]
变量名 = list( )
-
嵌套列表
[[元素1,元素2] , [元素3,元素4] , ········]
-
列表的下标索引
从左向右,标记为从0开始递增
从右向左,则最右边的标号为-1,右向左递减
list = ['Tom','Lily','Rose'] print(list[-1])------>Rose print(list[2])------>Rose print(list[0])------>Tom
嵌套列表
list = [[1,2],3,[4,5,6,7],8,9,0] print(list[2][2])------>6
有关列表的方法
-
查询(查找下标)
功能:查找指定元素在列表中的下标,找不到就报错ValueError
语法:列表名.index(元素)
-
修改特定位置的元素值(重新赋值)
语法:列表名[下标]=值
-
元素插入(指定位置插入元素)
列表名.insert(下标,元素)
-
把指定元素追加到列表尾部
列表名.append(元素)
列表名.extend(其他数据容器)
把其他数据容器内容取出,依次追加到列表尾部
-
删除元素
- del 列表名[下标],也可以带 切片 和 步长
- 列表名.pop(下标),可以用变量接收,原理是把要删除的元素返回出去,默认删除最后一个
-
删除指定元素(删除元素在列表中的第一个匹配项)
列表名.remove(元素)
list = [1,2,3,'asd',123,'bsdfg'] a = list.remove(123) print(list) ------------------------ [1, 2, 3, 'asd', 'bsdfg']
-
清空列表
列表名.clear()
-
统计某元素在列表中的数量
列表.count(元素)
-
统计列表中一共有几个元素
len(列表)
-
切片:输出时要在后面加冒号,
a[-1]为按索引取值,a[-1,]才是切片(输出的是列表类型)
a = ['a',4,1,'t','c']
print(a[-1],'|',a[-1:])
----------------------------------
c | ['c']
-
生成一个有序列表
li = list(range(10)),li是一个从0开始的,长度为10的列表
-
生成指定个数的随机列表
li = [random.randint(0,100) for _ in range(1000)]
表示0到100内的随机数,一共生成1000个,每个数的个数都是随机的
-
列表的排序
列表名.sort(key = 选择排序依据的函数, reverse = Ture/False)
key:传入一个函数,表示把列表的每个元素都传入函数中,返回排序依据
reverse:是否翻转排序结果,Ture为降序,False为升序
单用.sort(),默认是从小到大排
li = [(2, 2), (3, 4), (4, 1), (1, 3)] li.sort(key=lambda li: li[1],reverse=False) print(li) ---------------------------------------------- [(4, 1), (2, 2), (1, 3), (3, 4)]
- lambda li: li[1] # 这是一个匿名函数,传入的参数是 li ,返回的是列表中每个元素的第二个元素,也就是按照元素的第二个元素来排序;因为reverse值为False,所以排序为升序
-
列表的翻转
列表名.reverse()
l1 = [3,5,4,7,1,8,9,2,6] l1.reverse() print(l1)------->[6, 2, 9, 8, 1, 7, 4, 5, 3]
-
类型强转:
list(容器)
tuple1 = (1,4,2,5,'dasf','!+@#_') print(list(tuple1))------->[1, 4, 2, 5, 'dasf', '!+@#_'] set1 = {1,2,3,6,'segsdfga','1414^$#^'} print(list(set1))---------->[1, 2, 3, 6, 'segsdfga', '1414^$#^'] dict1 = {1:'afa','2':123,'qwe':[1,2,3],3:(1,2)} print(list(dict1))--------->[1, '2', 'qwe', 3] # 可见,如果是字典类型强转为列表类型,只会取key的值 str1 = 'fad3124r' print(list(str1))------->['f', 'a', 'd', '3', '1', '2', '4', 'r'] # 把字符串拆分为单个字符作元素
-
连接符.join(序列)
用连接符把序列中的元素连接起来,以字符串的形式输出
users = ['qdaw','afaf',123,'qweas'] users[-2] = '123' str1 = '_'.join(users) print(str1) ---------->qdaw_afaf_123_qweas
-
列表也可以相加也可以与整数相乘
# 列表相加 l1 = [3,5,4,7,1,8,9,2,6] l2 = ['Yuuka','Noa','Yoimiya'] print(l1+l2)----->[3,5,4,7,1,8,9,2,6,'Yuuka','Noa','Yoimiya'] # 列表与整数相乘 l2 = [1,2,3] print(l2*3)----->[1,2,3,1,2,3,1,2,3]
-
倒序删除元素
题目:l1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],删除索引为奇数的元素
通过index判断除2是否余1来用pop按索引删除,但是,你会发现,这样做思路没错,但是删不掉预想中的元素,因为这个方法是正向遍历列表,当前面一个元素被删除,那么后面的元素就会向前进一位,那么元素与其对应的下标索引就错位了。因此,可以用倒序的方法删除元素
for i in range(len(l1)-1,-1,-1):
if i % 2 == 1:
l1.pop(i)
print(l1)----->[0, 2, 4, 6, 8]
# 也可以用一个更简单的方法
del l1[1::0]
# 也可以这样(虽然是正向的)
for i in range(1,len(l1),2):
l1.remove(i)
循环一个列表时,不要改变列表的大小,否则有可能影响最后的结果