文章目录
一、基本方法
**
a = [1, 2, 3]
**
方法 | 说明 |
|
---|---|---|
append(value) | 在列表末尾添加元素 | >>>
~~
a.append(4) [1,2,3,4] |
insert(index,value) | 在列表中插入元素 | >>>
~~
a.insert(0,3) [3,1,2,3] |
del | del语句删除元素 | >>>
~~
del a[0] [2,3] |
pop(index) | 弹出列表中任何位置处的元素 | >>>
~~
a.pop(0) [2,3] |
remove(value) | 根据值删除元素(只删除第一个指定的值) | >>>
~~
a.remove(1) [2,3] |
clear() | 清空列表 | >>>
~~
a.clear() [] |
copy() | 列表的浅拷贝 | >>>
~~
a.copy() [1,2,3] |
count(value) | 统计元素个数 | >>>
~~
a.count(1) 1 |
extend(list) | 在列表末尾追加新的序列 | >>>
~~
a.extend([1]) [1,2,3,1] |
index(value) | 查找元素在列表中第一次出现的位置 | >>>
~~
a.index(1) 0 |
reverse() | 倒着打印列表 | >>>
~~
a.reverse() [3,2,1] |
sort() | 对列表进行永久性排序 | >>>
~~
a.sort(reverse=False) [1,2,3] |
len() | 确定列表长度 | >>>
~~
len(a) 3 |
min() | 数字列表最小值 | >>>
~~
min(a) 1 |
max() | 数字列表最大值 | >>>
~~
max(a) 3 |
sum() | 数字列表的总和 | >>>
~~
sum(a) 6 |
二、处理列表中重复元素
1、查找列表中重复元素的个数
from collections import Counter
print(Counter([4, 1, 3, 4, 5, 6, 7, 6, 4, 3, 4]))
Counter({4: 4, 3: 2, 6: 2, 1: 1, 5: 1, 7: 1})
2、统计列表中重复元素的索引
def get_index(lst=None,item=''):
return [index for (index,value) in enumerate(lst) if value == item]
lst = ['a','b','c','d','c']
print(get_index(lst, 'c'))
>>> [2, 4]
3、统计列表中重复元素在另一个列表中对应的元素
def get_index(lst=None, lst1=None,item=''):
return [lst1[index] for (index,value) in enumerate(lst) if value == item]
lst = ['a', 'b', 'c', 'd', 'c']
lst1 = ['A', 'B', 'C', 'D', 'C']
print(get_index(lst, lst1, 'c'))
>>> ['C', 'C']
三、列表叠加
a = [1, 2, 3]
print(a * 2)
[1, 2, 3, 1, 2, 3]
四、列表生成式
列表名 = [表达式 for循环 if条件]
格式:
variable = [out_exp for out_exp in input_list if out_exp == 2]
实例:
list1 = [i**2 for i in range(1, 11) if i % 2 == 0]
list1 = [i+j for i in 'ABC' for j in '123']
li = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
list1 = [item2 for item1 in li for item2 in item1 if item2 % 2 == 0]
五、列表切片
[m : ] # 代表列表中的第m+1项到最后一项
[ : n] # 代表列表中的第一项到第n项
list[start:end:step] # start:起始位置,end:结束位置,step:步长
六、列表排序方法
1、sorted()方法
基本语法:
sorted(iterable, key=None, reverse=False)
参数:
iterable -- 可迭代对象。
cmp(了解):用于比较的函数,比较什么由key决定;
key -- 主要是用来进行比较的元素,只有一个参数。用列表元素的某个属性或函数作为关键字,有默认值,迭代集合中的一项(指定可迭代对象中的一个元素来进行排序。)
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
返回值:
返回重新排序的列表。
实例:
list = [5, 2, 3, 1, 4]
new_list = sorted(list)
print(new_list)
# [1, 2, 3, 4, 5]
list = [5, 2, 3, 1, 4]
new_list = sorted(list, reverse=True)
print(new_list)
# [5, 4, 3, 2, 1]
list = [('b', 3), ('a', 1), ('c', 2), ('d', 4)]
new_list = sorted(list, key=lambda x: x[0], reverse=False)
# 序列为第一个参数的序列(x[0]表示按任意元素中索引为0的元素排序)
# key=lambda x: (x[0], x[1]) 先按第一个元素,再按第二个元素
print(new_list)
# [('a', 1), ('b', 3), ('c', 2), ('d', 4)]
List = [{1: 5, 3: 4}, {1: 3, 6: 3}, {1: 1, 2: 4, 5: 6}, {1: 9}]
def f(x):
return len(x)
new_list = sorted(List, key=f) # 按照元素长度排序
# key=lambda x: len(x)
print(new_list)
# [{1: 9}, {1: 5, 3: 4}, {1: 3, 6: 3}, {1: 1, 2: 4, 5: 6}]
List = ['Chr1-10.txt', 'Chr1-1.txt', 'Chr1-2.txt',
'Chr1-14.txt',
'Chr1-3.txt', 'Chr1-20.txt', 'Chr1-5.txt']
def func(element):
return int(element.split('-')[1].split('.')[0])
# 对元素进行连续两次切片操作(比较函数的参数表示列表中的任意元素)
new_list = sorted(List, key=func)
# new_list = sorted(List, key=lambda d : int(d.split('-')[-1].split('.')[0]))
print(new_list)
# ['Chr1-1.txt', 'Chr1-2.txt', 'Chr1-3.txt', 'Chr1-5.txt', 'Chr1-10.txt', 'Chr1-14.txt', 'Chr1-20.txt']
from operator import itemgetter
students = [('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 13)]
new_student = sorted(students, key=lambda student: student[2]) # 索引为2的元素排序
new_student_1 = sorted(students, key=itemgetter(0)) # 根据第一个元素进行排序
new_student_2 = sorted(students, key=itemgetter(1, 0)) # 根据第二个元素进行排序,有相同值时,根据第一个元素排序
print(new_student)
print(new_student_1)
print(new_student_2)
"""
[('jane', 'B', 12), ('dave', 'B', 13), ('john', 'A', 15)]
[('dave', 'B', 13), ('jane', 'B', 12), ('john', 'A', 15)]
[('john', 'A', 15), ('dave', 'B', 13), ('jane', 'B', 12)]
"""
from operator import itemgetter
d = {'data1': 3, 'data2': 1, 'data3': 2, 'data4': 4}
new_d = sorted(d.items(), key=itemgetter(1), reverse=False)
# d.items():使用items()先将字典转换为二元组的列表
print(new_d)
# [('data2', 1), ('data3', 2), ('data1', 3), ('data4', 4)]
str = "This is a test string from Andrew"
split_str = str.split(" ")
print("原序列:", split_str)
new_str = sorted(split_str, key=lambda x: x[0])
new_str_1 = sorted(split_str, key=lambda x: x.lower())
print("区分大小写的排序:", new_str)
print("不区分大小写的排序:", new_str_1)
"""
原序列: ['This', 'is', 'a', 'test', 'string', 'from', 'Andrew']
区分大小写的排序: ['Andrew', 'This', 'a', 'from', 'is', 'string', 'test']
不区分大小写的排序: ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
"""
2、sort()函数
基本方法:
list.sort(cmp=None, key=None, reverse=False)
参数
cmp(了解) -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
返回值
该方法没有返回值,但是会对列表的对象进行排序。
实例:
aList = ['Google', 'Runoob', 'Taobao', 'Facebook']
aList.sort()
print("List : ", aList)
# List : ['Facebook', 'Google', 'Runoob', 'Taobao']
# 获取列表的第二个元素
def takeSecond(elem):
return elem[1]
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
random_1 = [(2, 2), (3, 4), (4, 1), (1, 3)]
# 指定第二个元素排序
random.sort(key=takeSecond)
random_1.sort(key=lambda x: x[0])
# 输出类别
print('排序列表:', random)
print('排序列表:', random_1)
"""
排序列表: [(4, 1), (2, 2), (1, 3), (3, 4)]
排序列表: [(1, 3), (2, 2), (3, 4), (4, 1)]
"""