python:列表的常用方法

本文详细介绍Python列表的基本操作,包括添加、删除、查询等,并深入探讨如何处理重复元素、列表叠加、生成式、切片及排序方法。通过具体实例展示sorted()与sort()函数的用法,帮助读者掌握高效的数据处理技巧。
摘要由CSDN通过智能技术生成

一、基本方法

**
a = [1, 2, 3]
**

方法说明
实例
append(value)在列表末尾添加元素>>>    ~~   a.append(4)
[1,2,3,4]
insert(index,value)在列表中插入元素>>>    ~~   a.insert(0,3)
[3,1,2,3]
deldel语句删除元素>>>    ~~   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)]
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值