列表List的常见操作
特点
- 以中括号[]表示
- 其中元素可增加,删除
- 可迭代
创建
-
创建一个空列表
val1 = list() val2 = [] print(type(val1)) print(type(val2)) print(val1) print(val2) # 结果 <class 'list'> <class 'list'> [] []
-
创建一个含有多个元素的列表
val = [1, 'a', (1,), {10:'abc'}] print(type(val)) print(val) # 结果 <class 'list'> [1, 'a', (1,), {10: 'abc'}]
list(可迭代对象) val1 = list({1, 3, 2}) val2 = list((4, 7, 'a')) val3 = list({1:'a', 'b':3}) #会将键值放入list中 print(type(val1)) print(type(val2)) print(type(val3)) print(val1) print(val2) print(val3) # 结果 <class 'list'> <class 'list'> <class 'list'> [1, 2, 3] [4, 7, 'a'] [1, 'b']
索引取值
list[index] 返回index下对应的值,若index越界,抛异常
val = [1, 0, '2', 'a']
print(val[2])
# 结果
'2'
切片操作
-
从左往右是正向(从0开始逐渐增大,直到最右边元素的下标len-1)
-
从右往左是负向(从-1开始逐渐减小,直到最左边元素的下标-len)
list[start:end:direction] # 从start→end,是一种方向;direction也表示方向(正数表示从左往右,负向表示从右往左) # 只有当二者的方向一致时,才会进行切片;否则返回空元组 val = [1, 2, 3, 4] res1 = val[1:3:-1] res2 = val[-1:-3:1] print(res1) print(res2) # 结果 [] []
val1 = [1, 2, 3, 4] print(val1[1:3:1]) # 结果 [2, 3] val2 = [1, 2, 3, 4] print(val2(-1:-3:-1)) # 结果 [4, 3]
-
正向切片,当end<len-1时,总是左闭右开[);但当指明end>=len或end留空不写时,则最右侧数若在逐增步长可达到,则取最右侧值,否则不取。
val = [1, 2, 3, 4] print(val[1:3:1]) print(val[1:4:1]) print(val[1::1]) print(val[1::2]) print(val[1::5]) # 结果 [2, 3] [2, 3, 4] [2, 3, 4] [2, 4] [2]
-
负向向切片,当end>-len时,总是右闭左开(];但当指明end<=-len或end留空不写时,则最左侧数若在逐减步长可达到,则取最左侧值,否则不取。
val = [1, 2, 3, 4] print(val[-1:-3:-1]) print(val[-1:-4:-1]) print(val[-1::-1]) print(val[-1::-2]) print(val[-1::-5]) # 结果 [4, 3] [4, 3, 2] [4, 3, 2, 1] [4, 2] [4]
内置函数
# 增 删 查 排序
list.insert(inx, elmnt) 在inx位置上插入元素elmnt,被插入位置后的元素依次后移一位,list原地修改 返回值为None,若inx位置越界,不抛异常
list.append(elmnt) 将元素elmnt添加到list的尾部,list原地修改;返回值为None
list.extend(可迭代对象) 将可迭代对象中的元素,从list的尾部依次加入,原地修改list,返回值为None
list.pop(inx) 将在inx为上的元素从list中弹出,并返回,原地修改list;若inx越界,抛异常
list.remove(elment) 将list中的元素elmnt删除,返回值为None;若elment不在list中,抛异常
list.index(elmnt, start, end) 返回索引从start到end第一出现elmnt的索引下标。若不存在,抛异常。
list.count(elmnt) 返回list中elmnt出现的次数
list.sort(key, reverse) 以关键字key进行升序排列,reverse表示是否逆序排列,原地修改,返回值为None
list.copy() 将list进行复制并返回
list.reverse() 将list中的元素位置反向,list原地修改,返回值为None
list.clear() 将list清空为空列表,原地修改list,返回值为None
其他
list1 + list2 返回一个将两个元组中元素放在一起的新元组,但两元组中元素的相对位置不变
[1, 2] + [3, 4] → [1, 2, 3, 4]
tuple * n 返回一个将tuple中所有元素重复n遍的新元组,但是绝对位置不变
[1, 2] * 3 → [1, 2, 1, 2, 1, 2]